これは私がこれらの3点の座標が...私は手動でそれを行うだろうかあるポイントから別のポイントへベアリングを計算する方法はありますか?
です:
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v8',
center: coordinateOne,
zoom: 19
});
:私は最初の座標を中心に、このマップを、持っている
var coordinateOne = [-72.642883, 42.201343];
var coordinateTwo = [-72.639532, 42.200784];
var coordinateThree = [-72.637823, 42.199687];
を
次の座標が真っ直ぐである(正確ではないが、この例では十分近い)ように手動でベアリングを設定できます。
map.easeTo({ bearing:109, pitch:60, zoom:19 });
そして
私は直進と飛ぶことができる第2の座標:
map.easeTo({ bearing:130, pitch:60, zoom:19 });
そしてIはまっすぐ飛ぶことができる:私は手動で直進第3座標を入れ、再びベアリングを設定することができそして
map.flyTo({ center:coordinateTwo, zoom: 19 });
その第3座標へ:
map.flyTo({ center:coordinateThree, zoom: 19 });
自動的にそのベアリング値を計算する方法はありますか? ach flyTo
は常にまっすぐ進んでいますか?
私はthis questionを見つけました。これはJavaでこのアイディアをカバーしています。そこにあるコードに基づいて、というコードが出てきましたが、次のポイントをまっすぐに並べるのではなく、それに垂直な角度があります。
function bearing(lat1, lon1, lat2, lon2) {
var longDiff = lon2 - lon1;
var y = Math.sin(longDiff) * Math.cos(lat2);
var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(longDiff);
return (toDegrees(Math.atan2(y, x)) + 360) % 360;
}
function toDegrees (angle) {
return angle * (180/Math.PI);
}