您可以使用以下代码来获取地图折线的折中点:

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' 函数返回整个折线的所有折中点。

JavaScript 获取地图折线折中点代码

原文地址: https://www.cveoy.top/t/topic/oYTQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录