Comment obtenir les limites d'une carte google statique?
Comment obtenir les limites des degrés de google statique de la carte qui a été renvoyé, par exemple, pour la suite de la demande
http://maps.googleapis.com/maps/api/staticmap?center=0.0,0.0&zoom=10&size=640x640&sensor=false
Que je sais, la Terre entière de la carte est de 256x256 pixels de l'image. Cela signifie que les n pixels verticaux contiennent de x degrés, mais n pixels horizontaux contenir 2x degrés. Droit?
Que google dit
le centre définit le centre de la carte, à égale distance de tous les bords de la carte. Comme je l'ai compris à équidistance de pixels (ou en degrés?). Et à chaque passage de niveau de zoom du double de la précision dans les deux dimensions horizontales et verticales.
Donc, je peux trouver du delta de la valeur de la Longitude de la carte pour chaque valeur de zoom:
dLongitude = (HorizontalMapSizeInPixels /256 ) * ( 360 /pow(2, zoom) );
Mêmes calculs pour la Latitude:
dLatitude = (VerticalMapSizeInPixels /256 ) * ( 180 /pow(2, zoom) );
VerticalMapSizeInPixels et HorizontalMapSizeInPixels sont des paramètres de taille de la carte dans l'URL.
Il est bon de calculer le delta de la valeur de la Longitude, mais pour la Latitude qu'il est mauvais. Je ne trouve pas de delta de la valeur de la Latitude, il y a quelques delta d'erreur.
source d'informationauteur user1514958
Vous devez vous connecter pour publier un commentaire.
Oui.
Pas. Un pixel représentent des quantités variables de la latitude en fonction de la latitude. Un pixel à l'Équateur représente moins de latitude qu'un pixel près des pôles.
Les coins de la carte dépend de centre, le niveau de zoom et la taille de la carte, et vous auriez besoin d'utiliser la projection de Mercator pour les calculer.
Si vous ne voulez pas charger l'API complète, voici un MercatorProjection objet:
Vous pouvez enregistrer dans un fichier séparé, par exemple "MercatorProjection.js" et puis de l'inclure dans votre application.
Avec le fichier ci-dessus chargé, la fonction suivante calcule le SW et NE les coins d'une carte d'une taille donnée et à un zoom.
et vous souhaitez appeler comme ceci:
Merci Marcelo pour votre réponse. Il a été très utile. Dans le cas où quelqu'un serait intéressé, voici la version de Python du code (une traduction approximative du code PHP, probablement pas aussi pythonic qu'il pourrait l'être):
Utilisation :
Voici une, ligne par ligne, traduction de Marcelo code en PHP, ce qui peut probablement être nettoyé un peu. Fonctionne très bien! Grâce à Marcelo pour faire la partie la plus difficile.
Utilisation:
Pour les grands facteurs de zoom (>=8), où la non-uniformité de l'échelle de la carte sur l'axe y peut être négligée, il est beaucoup plus facile méthode, où l'on prend en compte 1/cos(latitude) correction de pixels/(degrés de latitude) de la résolution. Première résolution a pour zoom=0 est de 256 pixels par 360 degrés à la fois de x et y à 0 lattitude.
Ici, c'est la traduction de Delphi/Pascal avec quelques optimisations correspondre plus stricte Pascal de la langue et de la gestion de la mémoire.
Exemple d'utilisation: