我的地图上有2个数据图层:territories和newAreas。当我在地图上绘制多边形时,它将保存到newAreas数据图层中,进行处理,然后将输出添加到地域图层,并从地图中删除绘制的图层。
这一切都适用于我在地图上绘制的第一个多边形,但同一地图会话中的后续绘图似乎不会在地图上更新。
这是一个小提琴的例子。在绘图控件中选择多边形,然后绘制与地图上现有要素相交的多边形。然后再试一次。
https://jsfiddle.net/wf9g35ty/2/
我认为问题出在这里:
newAreas.addListener('addfeature', function(obj){
//get the drawn feature in geojson format
obj.feature.toGeoJson(function(geojson){
//convert the existing territories data layer to geojson
territories.toGeoJson(function(gj2){
//merge the existing territories to a single polygon
var features = gj2.features;
for(i=0;i<features.length;i++) {
if(i==0){
var union = features[i];
} else {
union = turf.union(union,features[i]);
}
}
//use Turf to cut out the overlapping parts
var difference = turf.difference(geojson, union);
//TO DO: The operation only works for the first territory added. Figure out how to draw more than one territory in same session add the difference to the territories layer &
territories.addGeoJson(difference);
// remove drawn feature.
newAreas.remove(obj.feature);
})
});
})
答案 0 :(得分:1)
我通过在remove事件之后添加以下两行代码解决了这个问题。
newAreas.setMap(null);
newAreas.setMap(map);
我必须使用setMap基本上从地图中删除整个数据层,然后重新添加它,这解决了问题。但它不是很直观。