GoogleMap Part1
Par Twister le mercredi, décembre 12 2007, 10:55 - Informatique - Lien permanent
Bon, il y a quelques jours maintenant je me suis penché sur GoogleMap pour voir ce que l'on pourrait en faire pour une application de géolocalisation simple. Mon problème est que l'application en question est un client lourd, donc impossible d'utiliser l'api Google pour parvenir à mes fins. Heureusement le net fourmille d'informations sur GoogleMap et j'ai donc réussi à en faire ce que je voulais. Après avoir quand même pas mal cherché à droite et à gauche ce qu'il me fallait (notemment dans le code de Google) j'ai décidé de faire ici un petit résumé de tout ce qu'il faut savoir pour bidouiller GoogleMap...
Pour cette première partie je vais commencer par les bases que vous pourrez d'ailleurs trouver un peu partout sur le web : le format des URLs de GoogleMap. Je ne dis pas que je vais vous donner ici tous les paramètres de ces URLs, mais au moins ceux qui sont nécessaires pour récupérer les cartes.
Organisation des cartes
Google possède 3 types majeurs de cartes :
- Plan
- Satellite
- Relief
Note : Ils peuvent aussi ajouter des couches aux carte, ainsi vous pouvez superposer un plan à une carte Satellite. Pour le moment je ne me suis pas penché sur le problème. Peut-être plus tard...
Google stocke ses cartes sous forme de dalles carrées de 256 pixels de côté. Ainsi pour constituer une carte il vous faut rassembler les morceaux. Chaque dalle peut être récupérée grâce à une URL spécifique. Bien sûr le format des URLs change en fonction du type de carte. Qui plus est, afin de répartir un peu la charge il existe plusieurs serveurs de cartes :
- kh0.google.com à kh3.google.com
- mt0.google.com à mt3.google.com
Les serveurs kh servent uniquement aux cartes satellites alors que les mt servent aux cartes plans et aux cartes reliefs.
Paramètres des cartes
Afin de constituer une URL de dalle il faut connaitre plusieurs paramètres :
- Le type de carte
- Le niveau de zoom
- Les coordonnées de la dalle
Il y a d'autres paramètres (donc certains obligatoires) mais dont la signification n'est pas très claire...
Les coordonnées de la dalle change évidemment en fonction du type de carte demandé (ce serait trop facile sinon)
Niveaux de zoom
Pour gérer son zoom GoogleMap compte de 0 à 17. Le niveau de zoom le plus élevé étant le 0. En fonction du niveau de zoom il est évident que le nombre de dalle consituant le globe change. Cela dit leur nombre est facile à calculer :
2^(17 - zoom)
Et oui, le nombre de dalles en fonction du zoom est une puissance 2. Pratique.
Les cartes plans et reliefs
Pour récupérer une dalle plan ou relief les URLS sont assez similaires :
- Pour un plan il suffit de faire une requêtes aux serveur mt* en leur passant en paramètres les coordonnées X, Y et le zoom de la dalle demandée.
- Pour un relief il faut rajouter &v=w2p.64 à l'url
Par exemple au zoom 17 (où il n'y a qu'une seule dalle) l'url est la suivante : http://mt0.google.com/mt?zoom=17&x=0&y=0
Au zoom 16 (4 dalles) les urls sont :
http://mt0.google.com/mt?zoom=16&x=0&y=0 http://mt0.google.com/mt?zoom=16&x=1&y=0 http://mt0.google.com/mt?zoom=16&x=0&y=1 http://mt0.google.com/mt?zoom=16&x=1&y=1
Les cartes satellites
Pour les cartes satellites les urls sont complètement différentes. En effet, allez savoir pourquoi, Google a décidé de ne pas adresser ses dalles avec des coordonnées X, Y mais par quadrant. Les quadrants sont nommés :
- Q pour NW
- R pour NE
- T pour SW
- S pour SE
Ainsi en zoom 16 (2x2 dalles), le quadrant en haut à gauche de coordonnées X=0, Y=0 est le quadrant Q
Pour les zooms supérieurs il suffit de continuer à décomposer chaque dalle en quadrants pour trouver le quadrant correspondant. Un peu comme dans une image fractale, on recommence à l'infini la décomposition. En fait cette forme à un nom : c'est un QuadTree.

Une fois le quadrant déterminé il faut le passer au paramètre t de l'URL en rajoutant un t devant le quadrant. Attention à ces URLs, elles ont aussi besoin d'un paramètre v qui doit être à 10 pour les zoom > 7 et 23 pour les zoom < 7 (ne me demandez pas pourquoi). Les URLs pour les cartes satellites sont donc de la forme :
http://kh0.google.com/kh?v=10&t=tq
Vous remarquerez l'abscence du paramètre zoom. En effet, pas besoin de le mettre, le niveau zoom correspond au nombre de Q,R,T,S présents dans la référence du quadrant. Logique... :p
Conclusion
Bon la semaine prochaine (peut être) on verra l'algo pour déterminer le quadrant, en attendant je vous laisse le chercher
.
On verra aussi comment déterminer la dalle en fonction de la latitude et de la longitude ainsi que le placement d'un point sur la carte.
Notes
QuadTrees : Wikipedia
Commentaires
Super article sensei!
J'attends la suite avec impatience
(Là c'est clair... tu ne peux pas t'arrêter en si bon chemin... :p )
P'tain ça ressemble vachement à une carte maritime de Zelda ça !!!!!!!!!
Trop fort Twist'
Heureusement qu'il existe de vrais ingénieurs sur Terre pour pondre des trucs aussi délirants, ça rattrape les branleurs de diplomés qui captent que dalle à la technique (comme moi)
!