gpt4 book ai didi

javascript - 如何在 Mapbox.js 中的两个坐标之间的直线上移动标记

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:46:54 25 4
gpt4 key购买 nike

下面是我找到的一些用于移动标记的代码,但我想在两个坐标之间的直线路径上移动标记,任何人都可以帮助这些是坐标

[90.40237426757811,23.75015391301012],[88.34930419921875,22.573438264572406] 

我需要这两点之间的坐标作为一条直线。代码是:

var marker = L.marker([0, 0], {

icon: L.mapbox.marker.icon({
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [-77, 37.9]
},
properties: { }
})
});

var t = 0;
window.setInterval(function() {

// making a lissajous curve here just for fun. this isn't necessary
// Reassign the features
marker.setLatLng(L.latLng(
Math.cos(t * 0.5) * 50,
Math.sin(t) * 50));
t += 0.1;
}, 50);

marker.addTo(map);

最佳答案

您需要这些线条有多准确?尝试这样的事情开始:

var start = {lat:90.40237426757811, lng:23.75015391301012}
var end = {lat:88.34930419921875, lng:22.573438264572406}
var n = 100; // the number of coordinates you want

coordinates = []
for(var i = n - 1; i > 0; i--){
coordinates.push( {lat: start.lat*i/n + end.lat*(n-i)/n,
lng: start.lng*i/n + end.lng*(n-i)/n});
}

这不准确,因为世界不是平坦的,从远处看它会开始看起来不对。

在投影的地球上绘制直线的完整数学更难,但这里有一个很好的解释: http://www.movable-type.co.uk/scripts/latlong.html在页面下方不远的地方有一个计算两个给定点的中点的公式。

使用该公式,然后使用您找到的每个端点的中点再找到两个点,然后使用这些点等等,直到您有足够的平滑线。

关于javascript - 如何在 Mapbox.js 中的两个坐标之间的直线上移动标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22968841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com