2009-09-07 16 views
3

いくつかの方向を読み込むと、マップは適切なズームレベルに調整されます。現在のズームレベルから最大の閲覧距離をGoogle Maps APIで取得する

次に、地図の中心から特定の半径内のデータベースにいくつかのマーカーを要求します。

現在のズームレベルに応じて正しい半径値を取得するにはどうすればよいですか?この値は、地図の中心から端までの実際の距離でなければなりません。

ありがとうございます!

+0

上部/下部または左/右端? –

+0

私は地図の中心からの距離が必要だと考えて、私は本当に問題ではありません...しかし、上端/左端と言いましょう。 –

+0

地図の中心から半径のあるすべてのマーカーを取得するか、地図の境界内にあるすべてのマーカーを取得しますか?それらは2つの異なるものです。 –

答えて

3

半径の代わりに、実際の範囲内でマーカーを取得する方が簡単で正確です。必要に応じて、範囲を簡単に拡大または縮小できます。

Javascriptを:

var bounds = map.getBounds(); 
var sw = bounds.getSouthWest(); 
var ne = bounds.getNorthEast(); 

var s = sw.lat(); 
var w = sw.lng(); 
var n = ne.lat(); 
var e = ne.lng(); 

PHP/SQL:

$query = "SELECT * FROM Markers WHERE "; 
if ($w > $e) { // If the bounds include the intl. date line 
    $query .= "(lat BETWEEN $s AND $n) AND ((lng BETWEEN -180 AND $e) OR (lng BETWEEN $w AND 180))"; 
} else { 
    $query .= "(lat BETWEEN $s AND $n) AND (lng BETWEEN $w AND $e)"; 
} 

しかし、あなたが本当に半径方法で移動する場合、あなたはこのような何かを行うことができます。

var w = map.getBounds().getSouthWest().lng(); 
var centerLng = map.getCenter().lng(); 

var distance = centerLng - w; // This is the distance from the center to the left edge in degrees. 
+0

素晴らしい、ありがとう! –

関連する問題