从数据层中删除所有function

我使用了类似的东西:

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

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

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

我已经尝试使用带有循环的map.data.remove(feature) ,但我似乎无法从map.data层获得所有function。

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

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

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

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

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

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

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

似乎map.data是’feature’类的集合。

因此,您可以使用map.data迭代并删除集合中的每个function