2010-11-24 4 views

Répondre

1

Google Maps est utilisé via une bibliothèque javascript qui s'exécute côté client (dans le navigateur). Il n'y a rien que vous puissiez faire sur le serveur.

Vous pouvez toutefois regarder la taille de la boîte de jonction en javascript (côté client) et régler le niveau de zoom en conséquence.

Je suis curieux: que faites-vous avec Google Maps sur le serveur?

+0

Mais, comment faites-vous ce zoom? – elvenbyte

6

@Peter En fait, il y a quelque chose que vous pouvez faire sur le serveur en utilisant Java. Vous pouvez calculer le minimum et les valeurs de latitude/longitude maximum de votre cadre de sélection, puis utilisez le code suivant:

int zoomLevel; 
double latDiff = latMax - latMin; 
double lngDiff = lngMax - lngMin; 

double maxDiff = (lngDiff > latDiff) ? lngDiff : latDiff; 
if (maxDiff < 360/Math.pow(2, 20)) { 
    zoomLevel = 21; 
} else { 
    zoomLevel = (int) (-1*((Math.log(maxDiff)/Math.log(2)) - (Math.log(360)/Math.log(2)))); 
    if (zoomLevel < 1) 
     zoomLevel = 1; 
} 

Cela a bien fonctionné pour ma place Google carte de 320x320 pixels, avec ZOOM_SCALING_FACTOR = 0,3838. Cette formule devrait fonctionner correctement pour n'importe quelle carte carrée de Google. La raison pour laquelle vous voyez log_2 utilisé est qu'une carte Google double en taille chaque fois que le niveau de zoom augmente de 1. Je gère également les cas de bords où les points coïncident presque (zoomLevel = 21), et où le globe entier est le zoom souhaité (zoomLevel = 1). La bonne chose à propos de ce côté serveur est que vous avez libéré votre moteur JavaScript de faire des calculs complexes (et potentiellement inutiles) qui pourraient ralentir le chargement de la page et empirer l'expérience utilisateur.

+0

Merci bien fait. – Blamkin86

Questions connexes