基于百度地图的多边形边界去重算法

原创
小哥 2年前 (2023-05-13) 阅读数 38 #大杂烩

绘制多边形或处理项目中多边形时,通常会有重叠的多边形边界的问题,导致可怜的视觉效果在处理或绘图结果!

Polygonoptimization = function (points, tolerence) {
        var tolerence = tolerence || 0.003;
        var map = this._map;
        if (!points.length) {
            return points;
        }
        if (points && points.length < 5) return points;

        for (var i = 0; i < points.length; i++) {
            points[i] = map.pointToPixel(points[i]);
        }
        var deletePointIndex = [];
        var resultsPoint = [];
        for (var j = 0; j < points.length - 3; j++) {
            var A = points[j];
            var B = points[j+1];
            var C = points[j+2];
            var Lab = Math.sqrt((A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y));
            var Lbc = Math.sqrt((C.x - B.x) * (C.x - B.x) + (C.y - B.y) * (C.y - B.y));
            var rABC = (C.x - B.x)*(B.x - A.x) + (C.y - B.y) * (B.y - A.y);
            var cABC = rABC / (Lbc * Lab);
            if (cABC + (1 - tolerence) < 0) {
                if (deletePointIndex.indexOf(j+1) === -1) {
                    deletePointIndex.push(j+1);
                }
            }
        }
        for (var s = 0; s < points.length-1; s++) {
            if(deletePointIndex.indexOf(s) === -1) {
                var newPoint = map.pixelToPoint(points[s]);
                resultsPoint.push(newPoint);
            }
        }
        return resultsPoint;
    }

写完它,我试过了,发现效果不是很好。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门