从数据层中删除所有功能

Aer*_*nor 11 javascript jquery google-maps google-maps-api-3

我使用了类似的东西:

var map;
function initialize() {
  map = new google.maps.Map(document.getElementById('map-canvas'), {
    zoom: 4,
    center: {lat: -28, lng: 137.883}
  });
  map.data.loadGeoJson('https://storage.googleapis.com/maps-devrel/google.json');
}

google.maps.event.addDomListener(window, 'load', initialize);
Run Code Online (Sandbox Code Playgroud)

将geojson形状文件加载到我的地图的map.data图层.在形状文件中,有几个"要素"类定义要在地图上绘制的多边形.直到这里我没有问题.

稍后,我想在另一个上加载另一个geojson文件(替换地图上绘制的'features').当您只是将另一个文件加载到另一个文件上时,它只会将其重绘到另一个文件上.在加载到新的geojson形状文件之前,如何清除所有要素的map.data图层?

我尝试使用 map.data.remove(feature) 循环,但我似乎无法从map.data图层获得所有功能.

Gid*_*idy 24

这将迭代所有功能并从map.data中删除它们.

map.data.forEach(function(feature) {
    // If you want, check here for some constraints.
    map.data.remove(feature);
});
Run Code Online (Sandbox Code Playgroud)

编辑1:解释 每个函数的地图数据都使用回调,因此您必须提供一个回调函数作为参数:

var callback = function(){ alert("Hi, I am a callback"); }; 
map.data.forEach(callback);
Run Code Online (Sandbox Code Playgroud)

现在,对于数据中的每个元素,它将显示警报.也可以使用参数给出回调,就像上面显示的代码一样.

   var callback = function(feature) {
        // If you want, check here for some constraints.
        map.data.remove(feature);
   };
   map.data.forEach(callback);
Run Code Online (Sandbox Code Playgroud)

进一步说明和示例:http://recurial.com/programming/understanding-callback-functions-in-javascript/

  • 我试过 `map.data.forEach(map.data.remove)` 但它抛出了一个错误。它不应该和你写的一样吗? (3认同)