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