清除谷歌地图上的标记?

时间:2015-05-17 00:39:33

标签: javascript google-maps google-maps-api-3

到目前为止,我的程序主动将json数据加载到地图上作为用户平移和缩放的标记。但是,每次在加载新标记之前完成此操作时,我需要清除现有标记。这段代码可以工作并删除标记,但只有当它附加到按钮时才会单击DOM侦听器。

    var features = map.data.addGeoJson(data);
    google.maps.event.addDomListener(document.getElementById('removeBtn'), 'click', function () {
                for (var i = 0; i < features.length; i++)
                    map.data.remove(features[i]);
            });

这是我的代码

    function initialize() {
        var mapCanvas = document.getElementById('map-canvas');
        var mapOptions = {
          center: new google.maps.LatLng(39.50, -98.35),
          zoom: 4,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        }
       var map = new google.maps.Map(mapCanvas, mapOptions)
       google.maps.event.addListener(map, 'idle', function() {
         try{
           for (var i = 0; i < features.length; i++) {
                    map.data.remove(features[i]); 
            }
            }catch(err){
                console.log("fail")
            }

         $.getJSON("/static/json/data.json", function(data) {
            var features = map.data.addGeoJson(data) {
          });
       });
     });       
   }
    google.maps.event.addDomListener(window, 'load', initialize);

GEOJSON数据

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [
          -84.375,
          36.31512514748051
        ]
      }
    }
   ]
  }

如何处理此问题,以便'idle'事件侦听器在加载新标记之前清除现有标记?

2 个答案:

答案 0 :(得分:1)

您不需要在某处存储功能,地图就知道功能。

只需执行以下行即可从地图中删除所有要素:

(function(m){m.data.forEach(function(f){m.data.remove(f);});}(map))

答案 1 :(得分:1)

代码的问题是getJSON回调中var之前的单词features

删除该字词。

然后,您将写入全局features变量。你的for循环将能够删除它们。