我用过类似的东西:
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 文件(替换地图上绘制的“特征”)。当您将另一个文件加载到另一个文件上时,它只会将其重新绘制到另一个文件上。在加载新的 geojson 形状文件之前,到底如何清除所有要素的 map.data 图层?
我尝试过使用map.data.remove(feature)
有一个循环,但我似乎无法从 map.data 层获取所有功能。
这将迭代所有功能并将它们从map.data.
map.data.forEach(function(feature) {
// If you want, check here for some constraints.
map.data.remove(feature);
});
编辑1:解释地图数据 forEach 函数使用回调,因此您必须提供回调函数作为参数:
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/ http://recurial.com/programming/understanding-callback-functions-in-javascript/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)