数時間の調査の後、解決策が見つかりました。それはトリックのように見えますが、うまくいきます。ここ
まず第一にarc.js documentationから元のコードです:
var start = { x: currentPoint.longitude, y: currentPoint.latitude },
end = { x: nextPoint.longitude, y: nextPoint.latitude },
generator = new arc.GreatCircle(start, end),
arcLine = generator.Arc(1000 ,{offset:10});
主な問題はarc.jsがInternational Date Lineと交差するラインの座標を計算することはできませんです。だから私はGreat Circleを計算する前にポイントを1つのタイルに移動することに決めました。
私は、経度のオフセットを見つけなければならなかった:
var dateLineOffset = 180 - currentPoint.longitude;
またnextPoint.longitude
である可能性があります。どの点が左に置かれているかによって異なります。
あなたは座標を生成するarc.jsを使用することができた後:
var start = { x: -180, y: currentPoint.latitude },
end = { x: nextPoint.longitude + dateLineOffset, y: nextPoint.latitude },
generator = new arc.GreatCircle(start, end),
arcLine = generator.Arc(1000 ,{offset:10});
その後、生成された座標を反復し、オフセットを修正する必要があります。私の場合は、マップを使用しました。
var coordinatesWithOffset = arcLine.geometries[0].coords,
geodesicLineCoordinates = coordinatesWithOffset.map(function(coord) {
return ol.proj.fromLonLat([coord[0] - dateLineOffset, coord[1]]);
}),
geodesicLine = ol.geom.LineString(geodesicLineCoordinates);
これだけです。 geodesicLine
には適切な座標が含まれます。
オフトピック:なぜあなたの写真に敵意がありますか? –
@JonatasWalkerはもうありません:) –
Hahaha ..もっと良い:-) –