* @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)
| 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 |
no test coverage detected