GMap2 - Overlays

Les méthodes liées aux superpositions (overlays) permettent d’ajouter ou d’enlever des éléments de la carte.

Accès direct aux méthodes:
addOverlay removeOverlay clearOverlays getPane

addOverlay()

Signature de la méthode addOverlay :
addOverlay(overlays : GOverlay).

La méthode addOverlay permet d’ajouter un élément sur la carte. C’est cette méthode qui est utilisée pour ajouter un marker sur la map par exemple.
Lorsque que cette méthode est appelée, l’événement addoverlay [bientôt en ligne] est déclenché.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.addOverlay(monMarker);
   /* En considérant un marker nommé "monMarker" déjà défini dans l'application,
    la méthode addOverlay() se chargera de l'afficher sur la carte. */

</script>

removeOverlay()

Signature de la méthode removeOverlay :
removeOverlay(overlays : GOverlay).

La méthode removeOverlay permet d’enlever un élément de la carte. Tenter de supprimer un élément qui n’existe pas déclenchera une erreur.
Lorsque que cette méthode est appelée, l’événement removeoverlay [bientôt en ligne] est déclenché.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.removeOverlay(monMarker);
   /* En considérant un marker nommé "monMarker" déjà défini dans l'application,
    la méthode removeOverlay() se chargera de l'enlever de la carte. */

</script>

clearOverlays()

Signature de la méthode clearOverlays :
clearOverlays().

La méthode clearOverlays permet d’enlever tous les éléments de la carte.
Lorsque que cette méthode est appelée, l’événement clearoverlays [bientôt en ligne] est déclenché.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.clearOverlays();
   /* La méthode clearOverlays() se charge d'enlever tous les éléments de la carte. */

</script>

getPane()

Signature de la méthode getPane :
getPane(pane : GMapPane).

La méthode getPane retourne un DIV contenant l’ensemble des objets de la couche identifiée par le paramètre pane.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.addOverlay(monMarker);
   /* En considérant un marker nommé "monMarker" déjà défini dans l'application,
    la méthode addOverlay() se chargera de l'afficher sur la carte. */

   var coucheDesMarkers = map.getPane(G_MAP_MARKER_PANE);
   /* La variable coucheDesMarkers contient l'ensemble des objets
   appartenant à la couche G_MAP_MARKER_PANE et
   représente cette même couche. */

   var div = document.createElement('div');
   div.style.height = '30px';
   div.style.width = '30px';
   div.style.background = '#eee';
   /* Création d'un div carré de 30px de côté et de couleur grise. */

   pane.appendChild(div);
   /* Ajout de ce div sur la carte au niveau de la couche
   représentant les markers. */

</script>

Constantes GMapPane

Les constantes GMapPane représentent les différentes couches de la carte où s’empilent les différents éléments (sous forme de z-index) tels que les markers, les ombres, les zones réactives aux mouvements de la souris …

Chaque couche représente un ensemble d’objets similaires à afficher sur la carte et chaque couche dispose de son “z-index“. Les couches dont le z-index (ou z-order) est le plus élevé apparaissent au-dessus des couches ayant le z-index le plus faible.

À noter que l’on peut encore jouer sur les z-index au sein d’une même couche.

On peut avoir recours à ces constantes lorsque l’on souhaite afficher des objets personnalisés sur la carte, notamment au moyen de l’interface GOverlay.

Les couches ci-dessous sont listées dans le sens croissant de leur empilement. Les premières sont les plus basses, les dernières les plus hautes (les plus au-dessus).

Pour récupérer et cibler des objets du DOM sur les différentes couches, on peut ensuite utiliser la méthode GMap2.getPane() qui attend quant à elle en paramètre, une de ces couches.

G_MAP_MAP_PANE

La constante G_MAP_MAP_PANE représente le niveau le plus bas dans l’empilement des différentes couches. On peut dire qu’il se situe juste au-dessus des tuiles (ou des tiles : couches contenant les morceaux de la carte constituant la map globale).

G_MAP_OVERLAY_LAYER_PANE

Disponible depuis la version 2.127 de l’Api.

La constante G_MAP_OVERLAY_LAYER_PANE représente la couche qui contient les polylignes, les polygones ou encore les superpositions de tuiles.

G_MAP_MARKER_SHADOW_PANE

La constante G_MAP_MARKER_SHADOW_PANE représente la couche qui contient les ombres des markers.

G_MAP_MARKER_PANE

La constante G_MAP_MARKER_PANE représente la couche qui contient les images utilisées pour représenter les markers.

G_MAP_FLOAT_SHADOW_PANE

La constante G_MAP_FLOAT_SHADOW_PANE représente la couche qui contient les ombres des fenêtres d’information. Cette couche est située juste au-dessus la couche G_MAP_MARKER_PANE de manière à ce que les markers puissent apparaître dans l’ombre des fenêtres d’information.

G_MAP_MARKER_MOUSE_TARGET_PANE

La constante G_MAP_MARKER_MOUSE_TARGET_PANE représente la couche qui contient des éléments transparents destinés à recevoir les événements liés à la souris sur les markers. Cette couche est située au dessus de la couche G_MAP_FLOAT_SHADOW_PANE de manière à ce que les markers situés dans l’ombre d’une fenêtre d’information soient cliquables.

G_MAP_FLOAT_PANE

La constante G_MAP_FLOAT_PANE représente la couche qui contient les fenêtres d’information. Elle est située au-dessus de toutes les autres.

Modifier les états de la carte

Les méthodes liées aux états de la carte (map State) permettent de modifier ou d’agir sur la carte de votre application.

setCenter()

Signature de la méthode setCenter :
setCenter(center : GLatLng, zoom ? : nombre, type ? : GLatLng).

La méthode setCenter() affiche une carte centrée sur le point (center) passé en paramètre.
Les arguments zoom et type sont optionnels.

Si l’argument type est renseigné, la valeur passée en paramètre doit être connue de la carte; voir le constructeur et la méthode addMapType().

Cette méthode doit être appelée en premier après la construction de la carte pour lancer le chargement de l’état initial.

C’est une erreur que d’affecter des opérations sur une carte nouvellement créée après avoir invoqué cette méthode.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.setCenter(new GLatLng(48.8566667, 2.3509871), 13);

   /* Ici, nous affichons une carte centrée sur Paris.
   Le zoom appliqué vaudra 13. */

</script>

panTo()

Signature de la méthode panTo :
panTo(center : GLatLng).

La méthode panTo() change le centre de la carte en se rendant au point passé en paramètre.
Si ce point est déjà visible sur la vue en cours, la carte se déplace alors jusqu’à ce dernier.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.setCenter(new GLatLng(48.8566667, 2.3509871), 13);

   /* Ici, nous affichons une carte centrée sur Paris.
   Le zoom appliqué vaudra 13. */

   GEvent.addListener(map, "click", function() {
      map.panTo(new GLatLng(48.3906042, -4.4869013));
   });

   /* Nous ajoutons un écouteur d'événement sur la carte.
   Lorsque l'utilisateur clique dessus, elle se déplace au point
   passé en paramètre à la méthode panTo (en l'occurrence, Brest).    */

</script>

panBy()

Signature de la méthode panBy :
panBy(distance : GSize).

La méthode panBy() permet de déplacer la carte pour une distance donnée en paramètre à l’aide de l’objet GSize.
Voir le système de coordonnées utilisé par Google Map.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.setCenter(new GLatLng(48.8566667, 2.3509871), 13);

   /* Ici, nous affichons une carte centrée sur Paris.
   Le zoom appliqué vaudra 13. */

   GEvent.addListener(map, "click", function() {
      map.panBy(new GSize(100, 0));
   });

   /* Nous ajoutons un écouteur d'événement sur la carte.
   Lorsque l'utilisateur clique dessus, elle se déplace de 100 px
   vers l'Ouest (vers la gauche).   */

</script>

panDirection()

Signature de la méthode panDirection :
panDirection(dx : -1, 0 ou 1, dy : -1, 0 ou +1).

La méthode panDirection() permet de déplacer la carte d’une distance correspondant à la moitié de sa largeur. Les arguments dx et dy permettent quant à eux de préciser le sens du déplacement.

-1 : vers la gauche (dx) ou vers la haut (dy)
0 : aucun
+1 : vers la droite (dx) ou vers le bas (dy)

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.setCenter(new GLatLng(48.8566667, 2.3509871), 13);

   /* Ici, nous affichons une carte centrée sur Paris.
   Le zoom appliqué vaudra 13. */

   GEvent.addListener(map, "click", function() {
      map.panDirection(-1, 0);
   });

   /* Nous ajoutons un écouteur d'événement sur la carte.
   Lorsque l'utilisateur clique dessus, elle se déplace vers l'Est (vers la droite).   */

</script>

setZoom()

Signature de la méthode setZoom :
setZoom(niveau : nombre).

La méthode setZoom() permet de spécifier un nouveau niveau de zoom pour la carte.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.setCenter(new GLatLng(48.8566667, 2.3509871), 13);

   /* Ici, nous affichons une carte centrée sur Paris.
   Le zoom appliqué vaudra 13. */

   map.setZoom(5);

   /* Dans cet exemple, nous redéclarons le zoom
   appliqué à la carte avec la valeur 5.
   Elle s'affichera donc avec un niveau de zoom égal à 5 et non à 13. */

</script>

zoomIn()

Signature de la méthode zoomIn :
zoomIn(latlng ? : GLatLng, centrer ? : booléen, appliquer un zoom progressif ? : Booléen ).

La méthode zoomIn() incrémente le niveau de zoom en cours d’un niveau. Si un argument latlng est fourni, la carte effectuera le zoom de manière à ce que ce point reste visible sur la nouvelle vue (mais pas forcément centré).

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.setCenter(new GLatLng(48.8566667, 2.3509871), 13);

   /* Ici, nous affichons une carte centrée sur Paris.
   Le zoom appliqué vaudra 13. */

   GEvent.addListener(map, "click", function() {
      map.zoomIn(new GLatLng(50.6371834, 3.0630174), true);
   });

   /* Nous ajoutons un écouteur d'événement sur la carte.
   Lorsque l'utilisateur clique dessus, celle-ci effectue un zoom +
   en centrant la carte (centrer passé à true) sur le point
   passé en paramètre (ici, Lille). */

</script>

zoomOut()

Signature de la méthode zoomOut :
zoomOut(latlng ? : GLatLng, appliquer un zoom progressif ? : Booléen ).

La méthode zoomOut() décrémente le niveau de zoom en cours d’un niveau. Si un argument latlng est fourni, le zoom (négatif) s’effectuera autour de ce point.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.setCenter(new GLatLng(48.8566667, 2.3509871), 13);

   /* Ici, nous affichons une carte centrée sur Paris.
   Le zoom appliqué vaudra 13. */

   GEvent.addListener(map, "click", function() {
      map.zoomOut(new GLatLng(50.6371834, 3.0630174));
   });

   /* Nous ajoutons un écouteur d'événement sur la carte.
   Lorsque l'utilisateur clique dessus, celle-ci effectue un zoom -
   autour du point passé en paramètre (ici, Lille). */

</script>

savePosition()

Signature de la méthode savePosition :
savePosition().

La méthode savePosition() conserve en mémoire la position courante de la carte avec le zoom associé. Il sera ainsi possible d’y revenir en utlisant la méthode returnToSavedPosition().

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.setCenter(new GLatLng(48.8566667, 2.3509871), 13);

   /* Ici, nous affichons une carte centrée sur Paris.
   Le zoom appliqué vaudra 13. */

   GEvent.addListener(map, "click", function() {
      map.savePosition();
   });

   /* Nous ajoutons un écouteur d'événement sur la carte.
   Lorsque l'utilisateur clique dessus, la position en cours
   est conservée en mémoire. */

</script>

returnToSavedPosition()

Signature de la méthode returnToSavedPosition :
returnToSavedPosition().

La méthode returnToSavedPosition() permet de revenir à une vue sauvegardée à l’aide de la méthode savePosition().

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'));
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map */

   map.setCenter(new GLatLng(48.8566667, 2.3509871), 13);

   /* Ici, nous affichons une carte centrée sur Paris.
   Le zoom appliqué vaudra 13. */

   GEvent.addListener(map, "click", function() {
      map.savePosition();
   });

   GEvent.addListener(map, "dragend", function() {
      map.returnToSavedPosition();
   });

   /* Nous ajoutons 2 écouteurs d'événement sur la carte.
   Quand l'utilisateur clique dessus, la position est stockée en mémoire.
   Lorsqu'il relâche la carte, celle-ci revient automatiquement
   à la position sauvegardée via la méthode savePosition(). */

</script>

checkResize()

Signature de la méthode checkResize :
checkResize().

La méthode checkResize() notifie à la carte un changement de taille de son conteneur. Il peut être utile de faire appel à cette méthode lorsque les dimensions du DIV (généralement) contenant la carte ont été modifiées.
La carte pourra alors s’ajuster automatiquement à ces nouvelles dimensions.