【问题标题】:Remove all features from data layer从数据层中删除所有特征
【发布时间】:2014-08-16 03:56:20
【问题描述】:

我用过类似的东西:

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 图层中获取所有功能。

【问题讨论】:

  • 也许this 对你有用?
  • 不幸的是,标记与 map.data 图层位于不同的图层中。但已经找到解决方案谢谢。再加上最终的解决方案是 google maps api v2

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


【解决方案1】:

似乎map.data 是“功能”类的集合。

因此您可以使用 map.data 来遍历并删除集合中的每个特征

【讨论】:

    【解决方案2】:

    这将遍历所有特征并将它们从 ma​​p.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/

    【讨论】:

    • 我试过map.data.forEach(map.data.remove),但它抛出了一个错误。它不应该和你写的一样吗?
    • 你试过我的代码还是只试过map.data.forEach(map.data.remove)
    • 我都试过了。你的方法很好。我的没有。我想我对 javascript 的理解不够好,无法使用这样的捷径。
    • 是的,匿名函数的工作原理很棘手。我也无法解释。也许这个link 对你有帮助,对回调的概念有更多的理解。
    • map.data.forEach(map.data.remove.bind(this)) 可能有效。 :)
    猜你喜欢
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2021-04-09
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多