使用 OpenLayers,删除标记层和弹出窗口的正确方法是什么?

发布于 2024-09-30 12:11:19 字数 990 浏览 7 评论 0原文

LoadPin 是一个向地图添加标记的函数。它在第一次调用时初始化该层。 map 是一个 openlayers 地图对象。

但使用 map.removeLayer("markers") 或 "Markers" 不会从地图上删除标记。我看到提到要执行此操作的销毁操作,但找不到。

并且,如何删除弹出窗口?

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));
}

LoadPin is a function to add a marker to a map. It initializes the layer on the first call. map is an openlayers map object.

But using map.removeLayer("markers") or "Markers", does not remove the markers from the map. I saw a mention of a destroy operation to do this but cant find that.

AND, how do I remove the popups?

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));
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

尽揽少女心 2024-10-07 12:11:19

您可以通过以下方式从标记图层中删除单个标记:

markers.removeMarker(marker);

删除带有标记的整个图层应通过以下方式实现:

markers.destroy();

您应该能够通过以下方式删除弹出窗口:

map.removePopup(popup);

其中 popup 是之前创建的 Popup 对象。

You can remove individual markers from a marker layer with:

markers.removeMarker(marker);

Removing the entire layer, with markers should be achieved with:

markers.destroy();

You should be able to remove a popup with:

map.removePopup(popup);

where popup is the Popup object created earlier.

踏月而来 2024-10-07 12:11:19

我知道这篇文章很旧,但要从标记层列表中删除所有标记,请使用:

markerLayer.clearMarkers();

I know this post is old but to remove all markers from the marker layer list use:

markerLayer.clearMarkers();
两仪 2024-10-07 12:11:19

尝试以下任何代码,希望对您有所帮助。

this.markerSource.removeFeature(this.iconFeature); 

或者

this.markerSource.removeFeature(iconFeature);

Try the any of below code i hope it will help you.

this.markerSource.removeFeature(this.iconFeature); 

or

this.markerSource.removeFeature(iconFeature);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文