javascript - 添加另一层时自动删除先前的多边形(geojson 层)传单?

标签 javascript angularjs leaflet geojson

以下代码将启用在 map 上创建多边形。这工作正常,但添加新图层时以前的 geojson 图层也可见。

$http.get("./json/sf.geo.json").success(function(data, status) {
    leafletData.getMap('lfdt').then(function(map){    
    var polyLayer = L.geoJson(data, {filter: layerFilter}).addTo(map);
    function clear_polygon() {
        map.removeLayer( polyLayer );
            }

   function layerFilter(feature) {
          if (feature.properties.zip === $scope.code) return true;
        }
        map.fitBounds(polyLayer.getBounds(), {
        padding: [40, 40]
    });
});

我有邮政编码下拉列表,我想在传单 map 上显示选定的邮政编码边界。问题是当用户选择另一个邮政编码时,会显示新的多边形,但也会显示旧的多边形,如下图所示。

enter image description here

任何人都可以帮我我应该在哪里写removeLayers()。请推荐我。

最佳答案

问题是,通过使用 var 重新声明变量,对前一个对象的引用就会丢失。

这意味着,首先,您必须在 get 调用之外声明变量。就在你的 javascript 文件的顶部。

var polyLayer;

然后只需从 get 函数中的该行中删除 var 即可。改变

var polyLayer = L.geoJson(data, {filter: layerFilter}).addTo(map);

if(polyLayer)
{
    map.removeLayer(polyLayer); // remove the old polygon...
}
polyLayer = L.geoJson(data, {filter: layerFilter}).addTo(map); // ...then add the new polygon

关于javascript - 添加另一层时自动删除先前的多边形(geojson 层)传单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42406554/

相关文章:

javascript - 更新调用后额外的 GET API 调用

javascript - AngularJS 和 $http 获取 JSON - 数据未定义

javascript - 为什么 addEventListener 在 ES6 中工作一次?

javascript - 如何在ajax完成回调中返回promise?

java - 使用 htmlunit -Java 访问由 Javascript 生成的 html

javascript - 无法使用 ng-class 在 Angular 中应用 CSS

javascript - Angularjs 应用程序中的 `Uncaught SyntaxError: Unexpected string`

onclick - 单击更改(和更改回)传单图标

javascript - 传单.js : How to remove multiple layers from map

javascript - 添加有关突出显示状态的图例和信息