5

マップを使用した大圏距離の計算に問題があります。

コンテキスト: http://airports.palzkill.de/search/

この地図は大円距離検索地図として機能するはずです。円の中心マーカーまたは半径マーカーを動かすと、円が小さくなったり大きくなったりします。デバッグの目的で、ボックスのタイトル フィールドには、計算された距離が km で表示されます。

これは、円の中心が 0/0 に近く、半径マーカーがそこから離れすぎていない場合にのみうまく機能します。いずれかのマーカーを「極値」に移動すればするほど、すべての接線が外れて、がらくたしか生成されません。

これは、更新の計算に使用されるコードです。コード全体は、JS ファイル js.js の 146 行目から 184 行目にもあります。

function searchmapupdate()
{   
rad_lat_radiuspos = (circleradiusmarker.getPosition().lat()*Math.PI/180);
rad_lon_radiuspos = (circleradiusmarker.getPosition().lng()*Math.PI/180);
rad_lat_circlecenter = (circlecentermarker.getPosition().lat()*Math.PI/180);
rad_lon_circlecenter = (circlecentermarker.getPosition().lng()*Math.PI/180);

circleradiusvar = Math.acos(Math.sin(rad_lat_circlecenter)*Math.sin(rad_lat_radiuspos)+Math.cos(rad_lat_circlecenter)*Math.cos(rad_lon_radiuspos)*Math.cos(rad_lon_circlecenter-rad_lon_radiuspos))*6371.01*1000;

if (isNaN(circleradiusvar)==false) circle.setOptions({center:circlecentermarker.getPosition(), radius:circleradiusvar});

document.getElementById("mapsearchhead").innerHTML = Math.round(circleradiusvar/1000);
}

全体が正しい出力を計算するので、数学自体は完全に間違っているわけではないと思います. 残念ながら、私は三角法がまったく苦手なので、ここで何が間違っているのか、あるいはそれを修正する方法についてのアイデアをどこから探し始めればよいのかさえわかりません。

マルコ

PS: 投影の球状の性質により、すべてが極の周りで「直感に反する」動作をしなければならないことを私は知っています。しかし、それでは、両方のマーカーを赤道 (0/179、0/-179) の日付変更線の近くに移動するとどうなるかを説明することはできません。

4

1 に答える 1

3

さて、さらにコードを実装した後、実際に式に誤りがあることを発見しました。lat を使用する必要がある場所で lon を使用しています。

そして、はい、私は今非常に恥ずかしい思いをしています - そして同様にイライラしています.

于 2010-10-28T20:38:33.423 に答える