javascript - 按百分比获取两点之间连线上的经纬度点

标签 javascript math leaflet latitude-longitude geo

在下图中,您可以看到从一个点(黑色圆圈)到它的 3 个相关点 () 绘制了 3 条线。

图像

enter image description here

问题

如何使用两点之间距离的百分比计算沿每条线的点之间的纬度和经度点?

例如,如果我想获得能够沿每条线绘制额外圆圈且相差 20% 的位置?

我现在有什么代码

var data = [
  { "coords" : [ 53.409045, -2.985406 ]},
  { "coords" : [ 53.408747, -2.982862 ]},
  { "coords" : [ 53.407630, -2.984136 ]},
  { "coords" : [ 53.407142, -2.986931 ]}
];


var pointA = new L.LatLng(53.409045, -2.985406);
var pointB; 

data.forEach(function(d) {
  pointB = new L.LatLng(d.coords[0], d.coords[1]);
  L.polyline([pointA, pointB]).addTo(map);
  L.circle([d.coords[0], d.coords[1]], 10).addTo(map);
});

上面的代码唯一要做的就是为每个点画一个圆,以及从主圆 (pointA) 到其他圆 (pointB) 的直线

我非常需要知道如何计算点 A 及其相关点之间的多个坐标(按距离百分比)。

我需要确保所有绿色圆圈与中心圆的距离相同

用于测试的 CODEPEN

Codepen Link

编辑 - 使用下面的正确答案,我目前所拥有的图像

enter image description here enter image description here

最佳答案

请参阅此页面了解您的不同方程式。 http://www.movable-type.co.uk/scripts/latlong.html

  1. 获取从起点到终点的距离和方位。
  2. 将百分比转换为适用单位的距离。
  3. 使用#1 的方位 Angular 、#2 的距离和原点来获得结果位置

    function destination(lat, lon, bearing, distance) {
        var R = 6378.1, lat, lon, latDest, lonDest;
    
        // convert to radians
        lat = lat * (Math.PI / 180);
        lon = lon * (Math.PI / 180);
        bearing = bearing * (Math.PI / 180);
    
        latDest = Math.asin(Math.sin(lat) * Math.cos(distance / R) +
            Math.cos(lat) * Math.sin(distance / R) * Math.cos(bearing));
    
        lonDest = lon + Math.atan2(Math.sin(bearing) * Math.sin(distance / R) * Math.cos(lat),
                Math.cos(distance / R) - Math.sin(lat) * Math.sin(latDest));
    
        return [latDest * (180 / Math.PI), lonDest * (180 / Math.PI)];
    }
    

关于javascript - 按百分比获取两点之间连线上的经纬度点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31640252/

相关文章:

python - 如何在 python 中生成具有特定平均值的范围内的随机数?

css - 在 R Shiny 中使 Leaflet Map 全屏显示

javascript - 如何在 JSFiddle 上制作简单的 Leaflet Map?

html - 传单latlng到位置名称

javascript - 添加带有参数的事件监听器,然后将其删除

javascript - 响应式边框

javascript - 将对象拖出 IFrame

javascript - AngularJS,在声明 ng-model 之前激活复选框

c++ - 带复数的 viennacl

c# - 为什么平方根运算这么慢?