原文链接:Fyerl'sBlog前几天的一个小需求:用户在背景中绘制不规则区域,区域不能重叠。如图,判断分为两步:1.判断multi-morph中是否存在相交线段,如果没有则进行第二步判断(公式)2.判断是否存在包含关系顶点之间和多边形之间多边形(BMapLib.GeoUtils.isPointInPolygon)代码如下:/***Point:{lat:xxx,lng:xxx}*Line:[{lat:xxx,lng:xxx},{lat:xxx,lng:xxx}]*Surface:[{lat:xxx,lng:xxx},{lat:xxx,lng:xxx},{lat:xxx,lng:xxx}...]**/const{BMap,BMapLib}=window;/***线段是否相交*seg:[{lat:xxx,lng:xxx},{lat:xxx,lng:xxx}]**/functionisSegmentsIntersectant(segA,segB){constabc=(segA[0].lat-segB[0].lat)*(segA[1].lng-segB[0].lng)-(segA[0].lng-segB[0].lng)*(segA[1].lat-segB[0].lat);constabd=(segA[0].lat-segB[1].lat)*(segA[1].lng-segB[1].lng)-(segA[0].lng-segB[1].lng)*(segA[1].lat-segB[1].lat);如果(abc*abd>=0){返回假;}constcda=(segB[0].lat-segA[0].lat)*(segB[1].lng-segA[0].lng)-(segB[0].lng-segA[0].lng)*(segB[1].lat-segA[0].lat);constcdb=cda+abc-abd;返回!(cda*cdb>=0);}/***判断两个多边形边界是否相交*/functionisPolygonsIntersectant(plyA,plyB){for(leti=0,il=plyA.length;i
