Coordonnées de carte et de tuile

Sélectionnez une plate-forme : Android iOS JavaScript

L'API Maps JavaScript utilise les systèmes de coordonnées suivants :

  • Des valeurs de latitude et de longitude qui situent un point de manière unique sur Terre (Google utilise le système géodésique mondial WGS84).
  • Des coordonnées mondiales, qui désignent un point de façon unique sur la carte.
  • Des coordonnées en pixels, qui désignent un pixel spécifique sur la carte à un niveau de zoom donné.
  • Des coordonnées de tuile, qui désignent une tuile spécifique sur la carte à un niveau de zoom donné.

Coordonnées mondiales

Chaque fois que l'API doit traduire un lieu réel en point géographique sur une carte, elle commence par traduire les coordonnées de latitude et de longitude en coordonnées mondiales. Pour ce faire, elle utilise la projection de Mercator.

Pour simplifier le calcul des coordonnées en pixels (voir ci-dessous), nous considérons qu'une carte au niveau de zoom 0 est une tuile unique de la même taille que la tuile de base. Nous définissons ensuite les coordonnées mondiales relatives aux coordonnées en pixels au niveau de zoom 0, en utilisant la projection pour convertir les latitudes et les longitudes en positions de pixels sur cette tuile de base. Cette coordonnée mondiale est une valeur à virgule flottante mesurée depuis l'origine de la projection de la carte jusqu'au point géographique donné. Notez que dans la mesure où cette valeur est une valeur à virgule flottante, elle peut être bien plus précise que la résolution actuelle de l'image de carte affichée. En d'autres termes, les coordonnées mondiales sont indépendantes du niveau de zoom défini.

Dans Google Maps, les coordonnées mondiales sont mesurées à partir du point d'origine de la projection de Mercator (l'angle nord-ouest de la carte à 180 degrés de longitude et environ 85 degrés de latitude). Elles augmentent à la fois dans la direction x vers l'est (la droite) et la direction y vers le sud (le bas). Étant donné que la tuile Google Maps Mercator de base fait 256 x 256 pixels, l'espace de coordonnées mondiales utilisable est de {0-256}, {0-256}.

Notez que la projection de Mercator a une largeur finie sur le plan longitudinal, mais une hauteur infinie sur le plan latitudinal. Nous "coupons" l'image de la carte de base en utilisant la projection de Mercator à environ +/- 85 degrés pour rendre carrée la carte qui en résulte et ainsi simplifier la logique de sélection des tuiles. Notez qu'une projection peut générer des coordonnées mondiales en dehors de l'espace de coordonnées utilisables de la carte de base si vous sélectionnez des points tout près des pôles, par exemple.

Coordonnées en pixels

Les coordonnées en pixels désignent un pixel spécifique sur la carte à un niveau de zoom donné, tandis que les coordonnées mondiales reflètent des points géographiques absolus sur une projection donnée. Ces coordonnées en pixels sont calculées en utilisant la formule suivante :

pixelCoordinate = worldCoordinate * 2zoomLevel

Notez qu'à partir de l'équation ci-dessus, chaque niveau de zoom supérieur est deux fois plus grand dans les directions x et y. La résolution de chaque niveau de zoom supérieur est donc quatre fois plus importante que celle du niveau qui le précède. Par exemple, au niveau de zoom 1, la carte consiste en quatre tuiles de 256 x 256 pixels, soit un espace de pixels de 512 x 512. Au niveau de zoom 19, il est possible de référencer chaque pixel x et y sur la carte en utilisant une valeur située entre 0 et 256 * 219.

Étant donné que nous avons basé les coordonnées mondiales sur la taille des tuiles de la carte, le nombre entier d'une coordonnée en pixels permet d'identifier le pixel exact du point géographique en question au niveau de zoom sélectionné. Notez que pour le niveau de zoom 0, les coordonnées en pixels sont égales aux coordonnées mondiales.

Nous disposons maintenant d'une méthode pour indiquer précisément chaque point géographique sur la carte, à chaque niveau de zoom. L'API Maps JavaScript construit une fenêtre d'affichage à partir du niveau de zoom au centre de la carte (sous la forme de coordonnées LatLng) et de la taille de l'élément DOM conteneur, puis traduit ce cadre de délimitation en coordonnées en pixels. L'API identifie ensuite de façon logique toutes les tuiles de carte qui se trouvent à l'intérieur de ces limites en pixels. Chacune de ces tuiles de carte est référencée à l'aide de coordonnées de tuile, ce qui simplifie considérablement l'affichage des images de carte.

Coordonnées de tuile

Aux niveaux de zoom supérieurs, l'API ne peut pas charger simultanément toutes les images de carte. Au lieu de cela, l'API divise les images à chaque niveau de zoom en un jeu de tuiles de carte, qui sont organisées de façon logique dans un ordre que l'application peut comprendre. Lorsque l'utilisateur fait défiler la carte vers un nouveau point géographique ou modifie le niveau de zoom, l'API utilise les coordonnées en pixels pour identifier les tuiles nécessaires, puis traduit ces valeurs en un jeu de tuiles à récupérer. Ces coordonnées de tuile sont attribuées à l'aide d'un schéma qui permet de déterminer plus facilement sur le plan logique quelles tuiles contiennent les images pour tout point donné.

Dans Google Maps, les tuiles sont numérotées à partir de la même origine que les pixels. Quand Google implémente la projection de Mercator, la tuile d'origine est toujours à l'angle nord-ouest de la carte, avec les valeurs x augmentant d'ouest en est et les valeurs y augmentant du nord au sud. Les tuiles sont indexées au moyen des coordonnées x,y à partir de cette origine. Au niveau de zoom 2, par exemple, lorsque la Terre est divisée en 16 tuiles, chaque tuile peut être désignée par une paire x,y unique :

Carte du monde divisée en quatre lignes et quatre colonnes de tuiles.

Notez qu'en divisant les coordonnées en pixels par la taille des tuiles (256) et en conservant le nombre entier du résultat, vous obtenez en corollaire les coordonnées de la tuile au niveau de zoom actuel.

Exemple

L'exemple suivant affiche les coordonnées de Chicago (Illinois) : valeurs de latitude/longitude, coordonnées mondiales, coordonnées en pixels et coordonnées de tuile. Utilisez la commande de zoom pour afficher les valeurs des coordonnées à différents niveaux de zoom.

Pour voir comment les coordonnées ont été calculées, affichez le code.