1.定义一哥加载面的函数:
//加载面数据
function polygonRender(id, geojson, color, opacity) {
map.addSource(id + '_maine', geojson);
map.addLayer({
'id': id,
'type': 'fill',
'source': id + '_maine',
'layout': {},
'paint': {
'fill-color': color,
'fill-opacity': opacity
}
});
map.addLayer({
'id': id + '_outline',
'type': 'line',
'source': id + '_maine',
'layout': {},
'paint': {
'line-color': '#5500ff',
'line-width': 2
}
});
}
2.拿到两个面的数据,如下:
var poly1 = turf.polygon([
[
[-74.59750366210933, 40.24100740474415],
[-74.30448358322855, 40.25882589192875],
[-74.37864129807222, 40.01209703137826],
[-74.59012811447857, 40.036284501614546],
[-74.59750366210933, 40.24100740474415]
]
]);
var poly2 = turf.polygon([
[
[-74.52009027244021, 40.19067137177086],
[-74.40310561419257, 40.19486747791623],
[-74.4456776356767, 40.118247713516155],
[-74.52009027244021, 40.19067137177086]
]
]);
3.计算两个面重合的地方:
//去重部分,镂空状态
var difference = turf.difference(poly1, poly2); //交集
var polygonjson4 = {
'type': 'geojson',
'data': difference
};
polygonRender("polygon_id_4", polygonjson4, "orange", 1);
效果图如下: