基于百度地图的多边形边界去重算法
原创绘制多边形或处理项目中多边形时,通常会有重叠的多边形边界的问题,导致可怜的视觉效果在处理或绘图结果!
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;
}
写完它,我试过了,发现效果不是很好。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除