在观看后清除之前添加的GeoJson(scope.data)中的谷歌地图

Clear google map from previously addGeoJson(scope.data) after watch

本文关键字:GeoJson scope 谷歌地图 data 添加 清除      更新时间:2024-06-28

我想将谷歌地图与angular.js同步,所以我为谷歌地图创建了自定义指令。

代码

 var map;
 map = new google.maps.Map(document.getElementById('map'),
     mapOptions);

 scope.$watch('geojson', function(newVal, oldVal) {
     if (newVal !== oldVal) {

         map.data.setMap(null);
         map = new google.maps.Map(document.getElementById('map'),
             mapOptions);
         map.data.addGeoJson(scope.geojson);
     }
 }, true);

我的解决方案是有效的,但这不是我想要实现的,当数据发生变化时,每次都会用新的scope.geojson加载map,不幸的是,我找不到任何好的解决方案。如何只删除数据,我想没有一些选项可以添加geojson数据作为层?然后在添加新的geojson之前清除这一层,这样map就稳定了,只有geojson数据会改变吗?

使用data类的forEach方法循环遍历特征,并使用remove方法删除它们:

map.data.forEach(function (feature) {
    map.data.remove(feature);
});

data参考:https://developers.google.com/maps/documentation/javascript/reference#Data