С OpenLayers, как правильно удалить слой маркеров и всплывающие окна? - PullRequest
4 голосов
/ 03 ноября 2010

LoadPin - это функция для добавления маркера на карту. Инициализирует слой при первом вызове. карта является открытым объектом карты.

Но использование map.removeLayer («маркеры») или «Маркеры» не удаляет маркеры с карты. Я видел упоминание об операции уничтожения, чтобы сделать это, но не могу найти это.

И как мне удалить всплывающие окна?

var markers = null
function LoadPin(LL, name, description) {
    var size = new OpenLayers.Size(36, 47);
    var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
    var icon = new OpenLayers.Icon('http://www.waze.co.il/images/home.png', size, offset);

    if (markers == null) {
        markers = new OpenLayers.Layer.Markers("Markers");
        map.addLayer(markers);
    }

    var marker = new OpenLayers.Marker(LL, icon)
    markers.addMarker(marker);
    var bounds = markers.getDataExtent();
    map.zoomToExtent(bounds);

    map.addPopup(new OpenLayers.Popup.FramedCloud("test", LL, null,
                "<div style='font-family:Arial,sans-serif;font-size:0.8em;'>" + name + "<br>" + description + "</div>",
                anchor = null, true, null));
}

Ответы [ 2 ]

10 голосов
/ 06 декабря 2012

Я знаю, что этот пост старый, но для удаления всех маркеров из списка слоев маркеров используйте:

markerLayer.clearMarkers();
9 голосов
/ 04 ноября 2010

Вы можете удалить отдельные маркеры из слоя маркера с помощью:

markers.removeMarker(marker);

Удаление всего слоя с маркерами должно быть достигнуто с помощью:

markers.destroy();

Вы должны быть в состоянии удалитьвсплывающее окно с:

map.removePopup(popup);

, где popup - это объект Popup, созданный ранее.

...