3

GPS 座標を JPanel に動的に変換して描画する必要があるクラスの問題に直面しています。このローカル ライブラリ データは、解析するファイルに含まれています。構造は、ID、郡、図書館名、緯度、経度です。

R1,Ramsey,Maplewood,45.0327,-93.0262
R2,Ramsey,Mounds View,45.1059,-93.2104
R3,Ramsey,New Brighton,45.06604,-93.19125
R4,Ramsey,North St. Paul,45.0105,-92.9968
R5,Ramsey,Roseville,45.0072,-93.1558
R6,Ramsey,Shoreview,45.0805,-93.1345
R7,Ramsey,White Bear Lake,45.0831,-93.0092

ご覧のとおり、場所は非常に接近しています (170 平方マイルに 7 か所、最大距離: 15.5 マイル)。私のコードは現在、GPS データではなく、ハードコードされた座標から適切にノードを描画してリンクできます。GPS の緯度と経度を XY 座標に変換するアルゴリズムを見つけましたが、計算が行われると、非常に近いために同じ XY になるため、すべてのオブジェクトが重ねて印刷されます。使用するテスト ファイルは 42 の場所を使用すると予想されるため、このプロセスは動的である必要があります。ランダムなポイントを使用する代わりに、適切なグラフィック レンダリングを作成するのに十分な多様性を持つ XY 座標を提供する方程式に対して何ができますか?

4

2 に答える 2

1

これを行う理想的な方法は、min-longitude と min-latitude 、max-longitude と max-latitude を見つけて、[0,0] と [JPanels.width , Jpanels.Height] にマッピングすることです。

このマップはただ行うことができます

Point map(cure_location){
   int X = (curr_location.longitude-min_longitude)*(scalelog);
   int Y = (curr_location.latitude-min_latitude)*(scalelon);
   return new Point(X,Y);
}

そしてscalelogとscalelonは

scalelog = (JPanels.width)/(max_longitude-min_longitude)
scalelat = (JPanels.height)/(max_latitude-min_latitude)
于 2013-05-03T17:56:58.533 に答える