Javascript 为移动的标记画一条线

Javascript 为移动的标记画一条线,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,下面是代码。代码从飞机上导入json lat/lng和航迹,然后在谷歌地图上用移动标记显示。我想做的是添加一个trail/poly line onlick函数,这样当用户单击标记时,它会显示后面的轨迹,类似于:(不需要所有颜色,现在只需要一种颜色,除非可行:))。提前谢谢 var infoWindows = {}; var markers = {}; function getIconForPlane(value) { var r = 255, g = 255, b = 0; ret

下面是代码。代码从飞机上导入json lat/lng和航迹,然后在谷歌地图上用移动标记显示。我想做的是添加一个trail/poly line onlick函数,这样当用户单击标记时,它会显示后面的轨迹,类似于:(不需要所有颜色,现在只需要一种颜色,除非可行:))。提前谢谢

 var infoWindows = {};
  var markers = {};
  function getIconForPlane(value) {
  var r = 255, g = 255, b = 0;
return {
    path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW,
    scale: 5,
    fillColor: 'rgb('+r+','+g+','+b+')',
    fillOpacity: 0.9,
    rotation: value.track
    };
}

function initialize() {

var mapOptions = {
center: new google.maps.LatLng(-36.363, 175.044),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
}; 
map = new google.maps.Map(document.getElementById("map_canvas"), 
 mapOptions);
window.setInterval(readData, 1000);
}

function text(value) {
return '<b>Speed: </b> ' + value.speed + ' <br><b>Flight: </b>' + 
value.flight 
 + 
 '<br><b>Vertical Rate: </b>' + value.vert_rate +'<br><b>Last radar contact: 
 </b>' +value.seen +'<b>s</b>';
window.setInterval(text, 1000);
}

 function createInfoWindow(value, marker, map) {
 var iw = new google.maps.InfoWindow({
 content: text(value)
 });
 google.maps.event.addListener(marker, 'click', function() {
   iw.open(map, marker);
 });
return iw;
}

function readData() {
 $.getJSON
 ('https://crossorigin.me/http://radar1.ddns.net:3080/data/aircraft.json
', function(data) {
$.each(data.aircraft, function(i, value) {
  var myLatlng = new google.maps.LatLng(value.lat, value.lon, value.flight, 
  value.altitude);
  if (markers[value.hex]) {
    markers[value.hex].setPosition(myLatlng);
    console.log("moving marker for " + value.hex);
infoWindows[value.hex].setContent(text(value));
 } else {
// create new
markers[value.hex] = new google.maps.Marker({
  position: myLatlng,
  icon: getIconForPlane(value),
  map: map,
  title: "Callsign: " + value.flight + ", Altitude: " + value.altitude
});
console.log("creating marker for " + value.hex);
infoWindows[value.hex] = createInfoWindow(value, markers[value.hex] 
 ,map)
 }
  });
 });
var infoWindows={};
var标记={};
函数getIconForPlane(值){
var r=255,g=255,b=0;
返回{
路径:google.maps.SymbolPath.FORWARD\u CLOSED\u箭头,
比例:5,
fillColor:'rgb('+r+','+g+','+b+'),
填充不透明度:0.9,
旋转:value.track
};
}
函数初始化(){
变量映射选项={
中心:新的google.maps.LatLng(-36.363175.044),
缩放:5,
mapTypeId:google.maps.mapTypeId.ROADMAP
}; 
map=new google.maps.map(document.getElementById(“map_canvas”),
地图选项);
设置间隔(读取数据,1000);
}
函数文本(值){
返回“速度:”+value.Speed+”
航班:'+ 价值飞行 + “
垂直速率:”+value.vert_Rate+”
最后一次雷达接触: '+value.seen+'s'; 设置间隔(文本,1000); } 函数createInfoWindow(值、标记、映射){ var iw=new google.maps.InfoWindow({ 内容:文本(值) }); google.maps.event.addListener(标记'click',函数(){ iw.打开(地图、标记); }); 返回iw; } 函数readData(){ $.getJSON ('https://crossorigin.me/http://radar1.ddns.net:3080/data/aircraft.json ,函数(数据){ 美元每架(数据、飞机、功能(i、值){ var mylatng=new google.maps.LatLng(value.lat、value.lon、value.flight、, 数值(海拔高度); if(标记[value.hex]){ 标记[value.hex].setPosition(myLatlng); console.log(“移动“+value.hex”标记); infoWindows[value.hex].setContent(text(value)); }否则{ //创造新的 markers[value.hex]=新的google.maps.Marker({ 职位:myLatlng, 图标:getIconForPlane(值), 地图:地图, 标题:“呼号:“+value.flight+”,高度:“+value.altime” }); log(“为“+value.hex”创建标记); infoWindows[value.hex]=createInfoWindow(值,标记[value.hex] ,地图) } }); });

}

你能用你的东西发布一个JSFIDLE或其他东西吗?嗨@John,我无法让它与JSFIDLE一起工作,但上面的代码就是全部代码:)。你成功地实现了它吗?我想为我的3D做同样的移动地图Thanks@bluewonder不,遗憾的是,你仍然在寻找方法,你能发布一个JSFIDLE或者你拥有的东西吗?嗨@John,我不能让它与JSFIDLE一起工作,但上面的代码就是全部代码:)。你成功地实现了它吗?我想为我的3D做同样的移动地图Thanks@bluewonder不,遗憾的是,我还在想办法