2016-07-26 5 views
0

Google Maps JavaScript APIを使用してWebアプリケーションを操作します。Googleマップの計算方法maxとmin LatとLong

、私はこの問題を持っている:

ユーザーは、それはいくつかのカスタムマーカーでマップを作成するアプリを開くと。 マーカーは、データベース(SQL)に緯度と経度で格納されます。 私はユーザーの位置と半径が10kmと言うことができます。

データベースから取得する必要があるのは、ユーザーから10km(半径)のマーカーだけです。

私のwhere節で私はlangに特定の値が必要です。長い。ボーダー。

Google APIの機能やそれを計算する方法がありますか?

例: テーブルマーカー

CODE    int   
LOCATION_LATITUDE float   
LOCATION_LONGITUDE float 

今すぐJSに私は center = user locationでマップを生成します。

私は、このSQL構造体を持っています。

そして今、私はテーブルセンターから半径10kmのマーカー(ユーザーの場所)を追加したい テーブルマーカーでは、世界中のマーカーがあります。

+2

[Google maps api locate corner coordinates](http://stackoverflow.com/questions/38534643/google-maps-api-locate-corner-coordinates) – geocodezip

+2

可能な複製の[バウンディングボックス座標の取得方法私のGoogleマップウィンドウ用](http://stackoverflow.com/questions/15652867/how-to-get-bounding-box-coordinates-for-my-google-map-window) – geocodezip

+0

@geocodezipこれらの質問を見ましたが、私とは関係ない...? map.getBounds(); - >現在のビューポートの南西緯度/経度と北東緯度/経度を返します。これは非常にいいですが、これは必要ありません。与えられたポイントと半径からLangとLongの4つの値を計算してwhere句に入れる方法が必要です。範囲内にあるこれらのものだけを選択することができます。 – mravkata

答えて

1

私は解決策を見つけた。 - > Haversineの式

座標(37、-122)を持つ点が地図の中心であるとしましょう。だから、 、文は6371キロメートル(マイル3959)で地球の半径であり、そして10は、探索領域の半径である

SELECT code FROM MARKERS WHERE (6371 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat)))) < 10

される場所。

関連する問題