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.

Quadrants GoogleMap

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