Я работаю над приложением динамического отображения, которое получает серию данных в виде 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"
}
У меня есть прослушиватель, настроенный на получение этих данных от push-сервера, который вызывает указанную ниже функцию для отображения местоположения устройства на карте.
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);