宣传单地图:如何删除层并将弹出窗口添加到地图?

时间:2016-11-05 13:37:09

标签: javascript jquery leaflet

我尝试{{1>}(标记,圈子和弹出)到地图。

我能够成功添加标记和圆圈,但我无法添加弹出窗口,也无法删除导致标记和圆圈相乘的层...

在添加新标记和循环之前,它基本上不会删除前一个标记和圆圈。

这是一个有效的FIDDLE:

https://jsfiddle.net/31ws6z37/3/

这是我的全部代码:

addLayer

有人可以让我知道如何删除Layer以及如何将弹出窗口添加到我的地图中吗?

任何帮助都将不胜感激。

修改

似乎什么都没有用,我把头发拉了出来。我转过来的每一个角落,每次搜索都表明我需要使用removeLayer删除标记,但对我来说情况并非如此,我不理解!!

这是我的代码的另一个版本,在删除旧代码之前仍会添加标记....

         function initializeMapAndLocator(){

                var map = L.map('map_2385853');




    googleStreets = L.tileLayer('http://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}',{
    maxZoom: 20,
    subdomains:['mt0','mt1','mt2','mt3']
}).addTo(map);



           map.locate({setView: true, 
                       maxZoom: 16, 
                       watch:true, 
                       timeout: 60000
                      });

      function onLocationFound(e) {
        var radius = e.accuracy / 2;
        var marker = new L.Marker(e.latlng, {draggable:true});
        var circles = new L.circle(e.latlng, radius).bindPopup("You are within " + radius + " meters from this point").openPopup();;

        map.removeLayer(marker);
        map.removeLayer(circles);




        map.addLayer(marker);
        map.addLayer(circles);







      }

      map.on('locationfound', onLocationFound);



         }

initializeMapAndLocator();

我确定我做错了什么,但我不知道在哪里以及怎么做!

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

问题在于你把错误的东西混合在一起。您可以更轻松地学习创建传单地图的basics。在您的第一个代码段中,首先初始化标记,然后将其删除,然后将其添加到地图中。这没有任何意义,也不符合逻辑。如果标记和圆圈图层位于地图上,请在onLocationFound()函数中询问。如果为true则删除它:

  var marker; 
  var circles;

  function onLocationFound(e) {
    var radius = e.accuracy / 2;

    if(map.hasLayer(circles) && map.hasLayer(marker)) {
        map.removeLayer(circles);
      map.removeLayer(marker);
    } 

            marker = new L.Marker(e.latlng, {draggable:true});
            circles = new L.circle(e.latlng, radius);
        circles.bindPopup("You are within " + radius + " meters from this point").openPopup();

            map.addLayer(marker);
    map.addLayer(circles);

} 

以下是修改后的 FIDDLE 。希望它有所帮助

greez Manuel