3

ユーザーがマップ上のポイントと半径を選択してジオフェンスを作成できる Grails の下で Google マップを使用してマッシュアップを行っています。これはデータベースに保存され、アプリケーションは GPS デバイスから一連の座標を常に受け​​取ります。

受信した座標を円に格納されている領域と比較したいと思います。点が円の内側 (または外側) にある場合、プログラムはアクションを実行します。ただし、座標が円の内側/外側にあるかどうかを確認する方法を知りたいです。これを可能にするJavascriptライブラリがありますが、サーバー上でこれを行う必要があります。

このための Java (または Groovy) ライブラリはありますか? どのように実装しますか?

4

7 に答える 7

7

ポイントから円の中心までの距離が <=円の半径の場合、それは円の内側にあります。
エリアがすべての円と比較して複数の円で構成されている場合...それほど時間はかかりません。

java.awt.geom.Point2D.Double はこれに最適です。

于 2009-07-09T17:19:19.157 に答える
5

「完璧」である必要がなければ、円などをプロットすることについて心配する必要はありません。2 つの場所 (テストする場所と円の中心) を取得し、ピタゴラスを使用して距離を見つけることができます。その距離が円の半径よりも小さい場合、円は内側です。

ただし、考慮すべき注意点があります。これが完全ではない理由は、おそらく緯度と経度を取得することになり、地球は球体だからです。地球の両極に近づくと、これはバラバラになります。しかし、あなたがやっていることにはそれで十分かもしれません。

于 2009-07-09T17:20:25.770 に答える
2

残念ながら、GPS座標は度単位であるため、ここでの応答のほとんどは便利に機能しません。緯度と経度の2点から大円距離に変換するための何かが必要になりますが、これは単純なピタゴラスの定理では不十分です。

Google Maps APIを使用している場合は、おそらくGLatLngを使用して必要なすべてを実行できます。他のポスターが指摘しているように、2点間の距離が指定された円の半径よりも小さいと判断できます。具体的には、GLatLng.distance(other:GLatLng)は、GPS位置間のメートル距離を返します。

実際に円を表示するには、もう少し精巧さが必要です。円の円周を描画するには、GPolygonを作成する必要があります。あなたはあなたのためにこれをすることができる多くの無料のJavaScript関数を見つけることができます。

于 2009-07-09T17:29:04.973 に答える
2

ヴィクトルとベスカが正解。つまり、点と中心の間の距離が半径よりも小さい場合、それは円の中にあります。

2 点間の大円距離については、GeoToolsを使用できますGeodeticCalculator。特に、 を使用して点と半径を設定しsetStartingGeographicPoint、続いて距離を返すsetDestinationGeographicPoint呼び出しを行います。getOrthodromicDistance

于 2009-07-09T17:58:45.023 に答える
0

Googleマップを使用しているため、地理的な距離については、ユークリッド幾何学ではなく球形幾何学が保持されます。ただし、駐車場などのように距離が比較的小さい場合は、ユークリッド距離の式 ( http://en.wikipedia.org/wiki/Distance ) を使用して、点が円の内側にあるか外側にあるかを調べることができます。

円の中心の座標 C(xc, yc) とその半径 R を知っていると思います。次に、与えられた点 P(x1, y1) について、ユークリッド距離 D を次のように求めます。

平方根((x1-xc)^2 + (y1-yc)^2))。D > R の場合、点は円の外側にあります。D < R の場合、点は円の内側にあります。D = R の場合、点は円周上にあります。

より長い距離で測定を行っている場合は、測地線を探す必要があります ( http://en.wikipedia.org/wiki/Great-circle_distanceを確認してください)。

お役に立てば幸いです。

乾杯

于 2009-07-09T17:37:15.673 に答える
0

1 つの可能性は、中心点からの距離を計算し、それを半径と比較することです。

アプリケーションによっては、世界が 2 次元ではなく球体であることを考慮する必要がある場合があります。地球上の距離を計算するには、このを使用できます。

于 2009-07-09T17:24:17.323 に答える
0

選択した座標と円の中心の間の距離であるベクトルを見つけ、選択した座標と円の中心の間の距離の 2 乗を、ベクトルの成分を 2 乗して加算することで計算します。そのスカラー (距離の 2 乗) が半径の 2 乗より小さい場合、点は円の中にあります。

この方法では平方根を取る必要がなく、通常の距離比較と同じくらい正確です。

于 2009-07-09T17:21:31.680 に答える