我们在 Vue.js 项目中使用 Mapbox GL JS 1.12.0。如果我有 2 个或更多多边形,我需要创建交叉对象。但是,我只能用 2 个多边形来做到这一点。代码如下:
import * as turf from '@turf/turf';
export function createIntersection(features) {
// features = 3 polygons on the screen bellow
const intersection = turf.intersect(...features);
return intersection;
}
截图:
如您所见,仅创建了 1 个交叉点对象。
如何处理超过 2 个多边形?
turf.intersect()只能与2个多边形相交。
如果要相交多个多边形,可以使用 turf.intersect() 将每个多边形与其他多边形相交,然后使用 turf.combine()组合结果。
这是一些示例代码:
const polygonA = ...;
const polygonB = ...;
const polygonC = ...;
const allIntersections = {
type: 'FeatureCollection',
features: [
turf.intersect(polygonA, polygonB),
turf.intersect(polygonA, polygonC),
turf.intersect(polygonB, polygonC),
],
};
const combinedIntersection = turf.combine(allIntersections);