JavaScript 获取地图折线折中点代码
您可以使用以下代码来获取地图折线的折中点:
function getMidpoint(point1, point2) {
var lon1 = point1.lng;
var lat1 = point1.lat;
var lon2 = point2.lng;
var lat2 = point2.lat;
var dLon = (lon2 - lon1) * Math.PI / 180;
var lat1 = lat1 * Math.PI / 180;
var lat2 = lat2 * Math.PI / 180;
var y = Math.sin(dLon) * Math.cos(lat2);
var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon);
var bearing = Math.atan2(y, x) * 180 / Math.PI;
var midpointLat = (lat1 + lat2) / 2 * 180 / Math.PI;
var midpointLon = (lon1 + lon2) / 2 * 180 / Math.PI;
return new BMap.Point(midpointLon, midpointLat);
}
function getPolylineMidpoints(polyline) {
var path = polyline.getPath();
var midpoints = [];
for (var i = 0; i < path.length - 1; i++) {
var point1 = path[i];
var point2 = path[i + 1];
var midpoint = getMidpoint(point1, point2);
midpoints.push(midpoint);
}
return midpoints;
}
使用方法:
var polyline = new BMap.Polyline(path);
var midpoints = getPolylineMidpoints(polyline);
其中,'path' 是折线的路径。'getMidpoint' 函数返回两个点之间的折中点,'getPolylineMidpoints' 函数返回整个折线的所有折中点。
原文地址: https://www.cveoy.top/t/topic/oYTQ 著作权归作者所有。请勿转载和采集!