私のJavaアプリケーションではJmapViewerを使用しています。マップはjPanelに描画されます。現在のズームレベルに対応するマップスケールを取得できますか?マップは、周知のメルカトル図法に基づいている:JMapViewer、OSMマップスケール、Javaを取得
X = R * lon * cos(lat1);
Y = R * log(tan(lat/2 + 45)), lat1 = 0;
投影共形であるため、ローカルリニアスケールは、方向とは無関係です。私のアイデアは、同じ平行を共有する2つの点を使用しています:
Point p1 = new Point(0,0);
Point p2 = new Point(100,0);
final double dlon = getPosition(p2).getLon() - getPosition(p1).getLon();
final double scale = 6380000 * abs(dlon) * PI/180/100; //scale = (R * dlon)/||p1-p2||
改善点:初期点p1はビューの中心になることがあります。
Point p1 = new Point(jPanel1.width()/2,jPanel1.height()/2);
Point p2 = new Point(jPanel1.width()/2 + 100, jPanel1.height()/2);
ピクセル座標は「メートル」で評価されます。式は、画素サイズ...
あなたはロン/緯度座標とメルカトル図法を持っていて、幅DXと高さDYのピクセルボックスへの射影を計算するJava、JMapViewer、のJPanelなどの独立したアルゴリズムの質問として、それを再投稿。質問にズームのアスペクトを追加します。ズームの中心点と倍率があります。残りは無関係です。現在のフォームでは、賢明な答えを得ることはほとんどありません。 –