2009-09-07 7 views
3

Lors du chargement de certaines directions, la carte s'ajuste au niveau de zoom approprié.Obtenir la distance de visualisation maximale du niveau de zoom actuel avec l'API Google Maps

Puis-je demander plusieurs marqueurs dans la base de données dans un certain rayon du centre de la carte.

Comment obtenir la valeur de rayon correcte en fonction du niveau de zoom actuel? Cette valeur doit correspondre à la distance réelle entre le centre et le bord de la carte.

Merci!

+0

Bord supérieur/inférieur ou gauche/droite? –

+0

Eh bien, vu que j'ai besoin de la distance du centre de la carte, je n'ai pas vraiment d'importance ... mais disons, le bord haut/gauche. –

+0

Voulez-vous obtenir tous les marqueurs avec un rayon du centre de la carte, ou tous les marqueurs qui sont dans les limites de la carte? Ce sont deux choses différentes. –

Répondre

3

Je pense qu'il est plus facile et plus précis d'obtenir les marqueurs dans les limites réelles, au lieu d'un rayon. Vous pouvez facilement étendre ou réduire les limites si vous le souhaitez.

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)"; 
} 

Mais si vous voulez vraiment aller avec la méthode de rayon, vous pouvez faire quelque chose comme ceci:

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

Merci! –

Questions connexes