在Leaflet映射中使用动态标记

时间:2011-11-24 17:14:25

标签: javascript mapping

我正在研究一个动态地图应用程序,它接收一系列数据作为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);

0 个答案:

没有答案