Использование динамических маркеров на карте Leaflet - PullRequest
2 голосов
/ 24 ноября 2011

Я работаю над приложением динамического отображения, которое получает серию данных в виде 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);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...