2010-11-03 3 views
4

LoadPin - это функция добавления маркера на карту. Он инициализирует слой при первом вызове. map - объект карты открытых слоев.С OpenLayers, каков правильный способ удаления слоя маркеров и всплывающих окон?

Но используя 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)); 
} 

ответ

9

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

markers.removeMarker(marker); 

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

markers.destroy(); 

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

map.removePopup(popup); 

где popup - это всплывающий объект, созданный ранее.

+0

Работал как шарм! Благодаря! – GilShalit

+0

можно ли скрыть маркер? –

10

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

markerLayer.clearMarkers(); 
+0

Мне нравится этот метод, но не уверен в важности docs desc: «Этот метод удаляет все маркеры из слоя. Маркеры не уничтожаются этой функцией, а удаляются из списка маркеров». –

+0

@HaydenThring Если нет другой ссылки на них, они будут собирать мусор. –