以下代码将启用在 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 上显示选定的邮政编码边界。问题是当用户选择另一个邮政编码时,会显示新的多边形,但也会显示旧的多边形,如下图所示。
任何人都可以帮我我应该在哪里写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/