マップの境界内にあるデータベースからの座標を読み込む

私は現在のマップ境界(map.getBounds())内の座標をデータベースからフィルタリングされたレコードのセットを返す必要があります

Google Maps API v3によると、これはクライアント側でapiと関数 "containsLatLng(latlng:GLatLng)"を使用して行うことができますが、この実装をサーバー側で実行してからこの座標内のレコードを返すだけです。

私の現在の実装は、地図がアフリカの中心にある場合に機能しますが、地図が中国とカナダを同じ視点で表示している場合、経度が太平洋で正から負に反転するため、実装は機能しません。

これを正確に実装する方法に関する提案はありますか?

2
@ RoHHaupt。正確には、問題は基本的にthatsです!ポリラインを使用して実際に境界線を投げているかどうかを確認します。
追加された 著者 byte_slave,
これについての専門家ではないので、私は答えよりもむしろコメントしたいと思います。経度が太平洋で肯定的から否定的に反転する問題はありますか?そうすれば、限界がなくなります。
追加された 著者 Rob Haupt,

1 答え

Googleマップでは、LatLngBoundsオブジェクトコンストラクタは四角形の境界の南西および北東の角を取ります。

1つのポイントが南西のコーナーであり、南東のコーナーではないことが分かっていることは、問題を解決するために不可欠です。

一方のポイントが南西のコーナーで、もう一方のポイントが北東のコーナーであることが分かっている場合は、2つのコーナーの経度を比較してください。あなたのアルゴリズムは次のように動作します:

    南西の角の経度が北東の角の経度よりも少ないの場合、その2つの経度の間に経度があり、角の2つの緯度。 (これはおそらく、条件が真であるアフリカでは機能しているが、太平洋に広がるものではないすべてのためにやっていることです)。

  • 北西の角の経度より南西の角の経度が more の場合、境界は0経度を横切り、条件を逆にする必要があります。南西の角の経度と北東の角の経度の間に数値的にないという経度があります。

わかりやすく、ほとんど確実に真実であるため、私はあなたが北極または南極をカバーする境界を決して持つことはないと仮定しています。 (Googleマップでは、そのような範囲をできるかどうかわからない。)

3
追加された