我正在研究一个动态地图应用程序,它接收一系列数据作为JSON,然后将数据转换为一个地图点,并在Leaflet中弹出。
JSON数据如下所示:
{
"unit":"90",
"latitude":36.120915,
"longitude":-97.0633733,
"velocity":0.022,
"heading":102.9,
"timestamp":"Wed, 23 Nov 2011 20:00:28 GMT"
}
我有一个监听器设置来从推送服务器接收这些数据,该服务器调用以下函数在地图上绘制单元的位置。
function drawUnit(unit)
{
//removeUnitMarkers();
var popupContent = "<h3>" + unit.number + "</h3>";
popupContent = popupContent + "<p><strong>Direction: </strong>" + unit.heading + "<br />";
popupContent = popupContent + "<strong>Speed: </strong>" + unit.velocity + "<br />";
popupContent = popupContent + "<strong>Last Update:</strong> " + unit.timestamp + "<br /></p>";
var markerLocation = new L.LatLng(unit.latitude,unit.longitude);
var marker = new L.Marker(markerLocation);
var unitNumber = unit.number;
var unitTest = 'test';
console.log(unitData);
unitLayerGroup.addLayer(marker);
marker.bindPopup(popupContent);
//unitMarkerCache.push(marker);
//map.panTo(markerLocation);
}
这适用于单个单元,但我需要它才能使用2个或更多单元。
我正在努力思考如何在地图上绘制单位,并能够调用一个独特的标记来摧毁它然后重绘它。我已经考虑过定义一个数组或对象来保存数据,但我无法使用单位的数字作为变量名的一部分。
var marker[unit.number] = {"unit":unit.number, "latitude":unit.latitude};
执行上述var marker[unit.number]
之类的操作不起作用; Firebug总是抛出一个错误:
missing ; before statement
http://10.10.1.10:86/map2.php 第161行
这是第161行:var marker[unit.number] = new L.Marker(markerLocation);