MCPcopy Create free account
hub / github.com/SuperMap/iClient-JavaScript / isQuadrilateralOverLap

Method isQuadrilateralOverLap

src/openlayers/overlay/Label.js:908–944  ·  view source on GitHub ↗

* @function Label.prototype.isQuadrilateralOverLap * @description 判断两个四边形是否有压盖。 * @param {Array. } quadrilateral - 四边形节点数组。例如:[{"x":1,"y":1},{"x":3,"y":1},{"x":6,"y":4},{"x":2,"y":10},{"x":1,"y":1}]。 * @param {Array. } quadrilateral2 - 第二个四边形节点数组。 * @returns {boolea

(quadrilateral, quadrilateral2)

Source from the content-addressed store, hash-verified

906 * @returns {boolean} 是否压盖,true 表示压盖。
907 */
908 isQuadrilateralOverLap(quadrilateral, quadrilateral2) {
909 var quadLen = quadrilateral.length,
910 quad2Len = quadrilateral2.length;
911 if (quadLen !== 5 || quad2Len !== 5) {
912 return null;
913 } //不是四边形
914
915 var OverLap = false;
916 //如果两四边形互不包含对方的节点,则两个四边形不相交
917 for (let i = 0; i < quadLen; i++) {
918 if (this.isPointInPoly(quadrilateral[i], quadrilateral2)) {
919 OverLap = true;
920 break;
921 }
922 }
923 for (let i = 0; i < quad2Len; i++) {
924 if (this.isPointInPoly(quadrilateral2[i], quadrilateral)) {
925 OverLap = true;
926 break;
927 }
928 }
929 //加上两矩形十字相交的情况
930 for (let i = 0; i < quadLen - 1; i++) {
931 if (OverLap) {
932 break;
933 }
934 for (var j = 0; j < quad2Len - 1; j++) {
935 var isLineIn = CommonUtil.lineIntersection(quadrilateral[i], quadrilateral[i + 1], quadrilateral2[j], quadrilateral2[j + 1]);
936 if (isLineIn.CLASS_NAME === "SuperMap.Geometry.Point") {
937 OverLap = true;
938 break;
939 }
940 }
941 }
942
943 return OverLap;
944 }
945
946 /**
947 * @function Label.prototype.isPointInPoly

Callers 8

getDrawnLabelsMethod · 0.95
LabelSpec.jsFile · 0.45
GraphSpec.jsFile · 0.45
LabelThemeLayer.jsFile · 0.45
GraphThemeLayer.jsFile · 0.45

Calls 1

isPointInPolyMethod · 0.95

Tested by

no test coverage detected