Marker déplaçable

Pour rendre un marker Google Map déplaçable sur la carte, ou encore draggable, nous ferons appel à la propriété enableDragging de l’objet GMarker.

Dans un premier temps, nous créons une carte et quelques markers.

Dans cet exemple, on ajoute en plus les coordonnées du marker dans l’info bulle (en cliquant sur le marker) une fois que celui-ci à été déposé.

À noter que le script présenté ci-dessous ne gère que le déplacement des markers et non la récupération des coordonnées du point.

Visualisation des markers déplaçables (draggable)

Comment rendre un marker déplaçable (draggable) avec Google Map

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'), { size: new GSize(635,300)});
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map
   avec une taille de 635 * 300 pixel */

   var myPoints = [];
   /* Déclaration du tableau qui contiendra nos points, objets GLatLng. */

   var bounds = new GLatLngBounds();
   /* Instanciation de la classe GLatLngBounds */

   myPoints.push( new GLatLng(48.8566667, 2.3509871)); // Paris
   myPoints.push( new GLatLng(48.8123155, 2.2381535)); // Meudon
   myPoints.push( new GLatLng(48.3906042, -4.4869013)); // Brest
   myPoints.push( new GLatLng(50.6371834, 3.0630174)); // Lille 
   /* On remplit notre tableau  */

   for(var i = 0; i < myPoints.length; i++){
     bounds.extend(myPoints[i]);
     var thisMarker = addThisMarker(myPoints[i]);
     map.addOverlay(thisMarker);
   }
   /* Extension des limites de la carte afin d'y insérer tous les points
   On ajoute également un marker pour chacun
   de ces points sur la carte   */ 

   function addThisMarker(point){
     var marker = new GMarker(point, {draggable : true});
     return marker;
}         

   On peut ensuite utiliser une méthode map State de la classe GMap2
   intitulée getBoundsZoomLevel qui récupère le zoom nécessaire pour afficher
   la carte en fonction de ses limites.

   var newZoom = map.getBoundsZoomLevel(bounds);

   De la même manière, on récupère le centre de la région (objet GLatLngBounds)
   à l'aide de la méthode getCenter().

   var newCentre = bounds.getCenter();

   Il suffit ensuite d'initialiser la carte avec ces éléments.

   map.setCenter(newCentre, newZoom);

</script>

Classe GMenuMapTypeControl

La classe GMenuMapTypeControl donne la possibilité de créer un contrôleur sous forme de menu déroulant permettant de sélectionner et de basculer entre différents types de vues disponibles.

Ce contrôleur contiendra tous les types de cartes disponibles rattachés à la carte en cours d’utilisation au moment de l’instanciation de la classe.

Par défaut, les cartes supportent les vues proposées via la constante G_DEFAULT_MAP_TYPES. Les cartes peuvent également proposer d’autres types de vues déclarés au moyen de la méthode GMap2.addMapType.

Ce type de menu permet en outre de préserver l’espace disponible sur la carte.

Constructeur GMenuMapTypeControl

Construction de l’objet GMenuMapTypeControl :
GMenuMapTypeControl( useShortNames ?: booléen) .

Créé un contrôleur de types de carte sous forme de menu déroulant. Les intitulés des types de cartes s’afficheront avec leur “nom raccourci” si le paramètre useShortNames est passé à true et qu’il a bien entendu été renseigné lors de la construction de l’objet GMapType via la méthode shortName() de la classe GMapTypeOptions.

Par défaut, les libellés des types de carte (textes présents dans le menu déroulant permettant de basculer sur les différents types de carte) auront pour valeur le “nom entier” du type de carte déclaré (via la propriété name de la classe GMapType).

Classe GMapTypeOptions

Les instances de la classe GMapTypeOptions sont utilisées dans la construction de l’objet GMapType via le paramètre optionnel opts?.

Cette classe ne dispose pas de constructeur, on l’instancie comme un objet javascript.

shortName

Signature de la propriété de shortName > shortName : String .

Renseigne le nom raccourci du type de carte défini. Ce nom est retourné par la méthode GMapType.getName(true) appliquée sur l’objet de type GMapType.

Par défaut, ce nom est le même que le nom entier (non raccourci) du type de carte en question.

urlArg

Signature de la propriété de urlArg > urlArg : String .

Renseigne l’argument url qui permet d’accéder directement au type de carte en question et qui est retourné par la méthode GMapType.getUrlArg() appliquée sur l’objet de type GMapType.

Par défaut, cette chaîne est vide.

maxResolution

Signature de la propriété de maxResolution > maxResolution : Number .

Renseigne la valeur du zoom maximum disponible pour le type de carte en question. C’est cette valeur qui est retournée par la méthode GMapType.getMaximumResolution() appliquée sur l’objet de type GMapType.

Par défaut, cette valeur correspond à la valeur du zoom maximum disponible pour l’ensemble des tuiles (images de 256*256px) du type de carte.

minResolution

Signature de la propriété de minResolution > minResolution : Number .

Renseigne la valeur du zoom minimum disponible pour le type de carte en question. C’est cette valeur qui est retournée par la méthode GMapType.getMinimumResolution() appliquée sur l’objet de type GMapType.

Par défaut, cette valeur correspond à la valeur du zoom minimum disponible pour l’ensemble des tuiles (images de 256*256px) du type de carte.

tileSize

Signature de la propriété de tileSize > tileSize : Number .

Renseigne la taille des tuiles (images) qui constituent le type de carte. Une tuile, au sein de l’api, étant toujours représentée par un carré, il suffit alors de ne renseigner qu’une seule valeur. C’est cette valeur qui est retournée par la méthode GMapType.getTileSize() appliquée sur l’objet de type GMapType.

Par défaut, la dimension d’une tuile est de 256 * 256 pixels.

textColor

Signature de la propriété de textColor > textColor : String .

Renseigne la couleur du texte à utiliser sur le type de carte. Cette valeur est retournée par la méthode GMapType.getTextColor() appliquée sur l’objet de type GMapType.

Par défaut, cette valeur vaut “black” (noir).

linkColor

Signature de la propriété de linkColor > linkColor : String .

Renseigne la couleur des liens présents sur le type de carte. Cette valeur est retournée par la méthode GMapType.getLinkColor() appliquée sur l’objet de type GMapType.

Par défaut, cette valeur vaut “#7777cc“.

errorMessage

Signature de la propriété de errorMessage > errorMessage : String .

Renseigne le message d’erreur à afficher (en cas d’erreur…) sur le type de carte. Cette valeur est retournée par la méthode GMapType.getErrorMessage() appliquée sur l’objet de type GMapType.

Par défaut, cette chaîne est vide.

alt

Disponible depuis la version 2.64 de l’api.

Signature de la propriété de alt > alt : String .

Renseigne le texte alternatif pour le type de carte concerné. Cette valeur est retournée par la méthode GMapType.getAlt() appliquée sur l’objet de type GMapType.

Par défaut, cette chaîne est vide.

radius

Disponible depuis la version 2.89 de l’api.

Signature de la propriété de radius > radius : Number .

Renseigne la valeur du rayon à utiliser pour le type de carte concerné. Cette valeur est exprimée en mètres.

Par défaut, cette valeur vaut 6378137, qui correspond au rayon de la Terre (en mètres) au niveau de l’Équateur.

heading

Disponible depuis la version 2.193 de l’api.

Signature de la propriété de heading > heading : Number .

Renseigne l’angle de vue dans le sens horaire (mesuré en degrés par rapport au Nord) à utiliser pour le type de carte concerné.

Par défaut, cette valeur est à 0.

Classe GMapTypeControl

Un objet de type GmapTypeControl propose un contrôleur permettant de sélectionner et de basculer entre différents types de vues disponibles à l’aide de boutons affichés sur la carte.

Ces contrôleurs seront disponibles pour tous les types de cartes rattachés à la carte en cours d’utilisation si ces derniers ont été déclarés au moment de la construction de la carte.

Par défaut, les cartes supportent les vues proposées via la constante G_DEFAULT_MAP_TYPES. Les cartes peuvent également proposer des types de vues déclarés au moyen de la méthode GMap2.addMapType.

Pour préserver l’espace disponible sur la carte, utilisez la classe GHierarchicalMapTypeControl qui aura pour rôle d’imbriquer les types de vues disponibles (entre boutons et cases à cocher [checkbox]) ou encore la classe GMenuMapTypeControl qui affichera un menu déroulant des différents types de vues.

Constructeur GMapTypeControl

Construction de l’objet GMapTypeControl : GMapTypeControl( useShortNames ?: booléen) .

Créé un contrôleur de types de carte qui aura pour libellé le “nom raccourci” si ce paramètre est passé à true et qu’il a bien entendu été renseigné lors de la construction de l’objet GMapType via la méthode shortName() de la classe GMapTypeOptions.

Par défaut, le libellé du contrôleur (texte présent dans le bouton permettant de basculer sur ce type de carte) aura pour valeur le “nom entier” du type de carte déclaré (via la propriété name de la classe GMapType).

classe GMapType

Google fournit des types de carte prédéfinis. La classe GMapType a pour but de permettre d’en créer des personnalisés.

Voir un exemple de carte personnalisée.

Exemple d’utilisation de la classe GMapType:

<script type="text/javascript">

	var Nuit = new GMapType(
	  /*  Tableau d'objets GTileLayer (type de tuile utilisé) */
	  [NuitTiles],

	  /*  Déclaration du type de projection utilisé  */
	  monTypeDeProjection,

	  /*  Déclaration du nom associé au type de carte */
	  'Nuit',

	  /*  Options liées au type de carte */
	  {
	    shortName : 'Nuit', /*  nom court */
	    tileSize : 256, /*  taille des tuiles */
	    maxResolution : 3, /*  zoo maxi autorisé */
	    minResolution : 0, /*  zoom mini autorisé */
	    linkColor : '#fff', /*  couleur des liens présents sur la carte */
	    textColor : '#fff' /*  couleur du texte présent sur la carte */
	  }
         );

</script>
Pour créer ses propres types de cartes, il faut au préalable :

  • Disposer d’images pour remplacer celles proposées par Google (appelées “tuiles“). Ces images seront alors renseignées via le paramètre layers qui représente un objet de type GTileLayer.
    C’est cet objet qui contient les informations relatives aux images utilisées (chemin pour y accéder, résolution utilisée (zoom disponibles pour ce type d’images, …))
  • Déclarer le type de projection utilisé. Il existe différents types de projection (plan, conique, cylindrique …). Il est également possible de créer ses propres fonctions mathématiques pour déclarer un nouveau type de projection.
    Par défaut, on peut utiliser la projection utilisée par Google, à savoir la projection de Mercator. Ce paramètre est à renseigner comme second argument du constructeur GMapType. Exemple : monTypeDeProjection = new GProjection();
  • Les autre arguments de la classe sont plus simples à mettre en place, il s’agit de simples options ou variables (comme le libellé qui apparaîtra dans le bouton affiché sur la carte qui permettra de basculer sur le type carte voulu par exemple)

Pour afficher ces nouveaux types de carte sur la map, il est nécessaire d’utiliser le constructeur GMap2 ou la méthode GMap2.addMapType().

(Voir aussi la classe GTileLayerOverlay pour ajouter (au lieu de remplacer la totalité) des couches d’éléments sur la carte.)

Cette classe peut également être sous-classée. Les arguments du constructeur peuvent alors être omis si la classe est instanciée comme un prototype. Un constructeur de sous-classe doit invoquer le constructeur GMapType à l’aide de la méthode call().

NB : Ces méthodes sont appliquées sur le type de carte passé en paramètre lors de la construction de la carte. La méthode getBoundsZoomLevel est quant à elle dipsonible sur la carte en elle-même.

Exemple d’utilisation de la méthode getSpanZoomLevel :

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'), { size: new GSize(655,300)});
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map
   avec une taille de 655 * 300 pixel */

   map.setMapType(G_SATELLITE_MAP);

   // Dans cet exemple, nous déclarons un type
   // de carte "satellite".

   var zoomMaxi = G_SATELLITE_MAP.getSpanZoomLevel(pts[1],pts[2],new GSize(400,400));

   // pts[1] et pts[2] correspondent  à 2 points
   // (objets de type GLatLng)  présents sur notre carte.

   // La variable zoomMaxi contiendra ici le zoom maximum
   // possible pour afficher ces 2 points sur une même vue
   // ayant pour dimension 400 * 400 px.

</script>

Consulter également la liste des constantes de la classe GMapType.

constructeur GMapType

Signature de la classe GMapType : GMapType(layers : GTileLayer[], projection : GProjection, name : String, opts? : GMapTypeOptions) .

Construit un type de carte à l’aide des arguments fournis et des paramètres optionnels (opts).

getSpanZoomLevel()

Signature de la méthode getSpanZoomLevel :
getSpanZoomLevel(center: GLatLng, span: GLatLng, viewSize: GSize) .

Cette méthode retourne le zoom maximum possible (pour le type de vue concerné) pour afficher 2 points sur une même vue ayant pour dimensions celles déclarées à l’aide du paramètre viewSize.

Si aucune vue (donc aucun zoom) n’est possible pour afficher une carte avec ces paramètres, la méthode retourne 0.

getBoundsZoomLevel()

Signature de la méthode getBoundsZoomLevel :
getBoundsZoomLevel(bounds: GLatLngBounds, viewSize: GSize) .

Cette méthode retournele zoom maximum possible (pour le type de vue concerné) pour que la section définie par le paramètre bounds remplisse la région déclarée (en pixels) par le paramètre viewSize sur la carte.

getName()

Signature de la méthode getName : getName(short: booléen) .

Lors de la déclaration d’un nouveau type de carte, il est possible de lui donner un nom qui s’affichera sur la carte (comme libellé de bouton de contrôle). Il est également possible de renseigner un nom raccourci pour les cas où ce nom ne pourrait s’afficher en entier.

La méthode getName retourne donc le nom associé au type de vue sur lequel s’applique la méthode. Si le paramètre short vaut true, la méthode retournera le nom raccourci s’il existe.

Exemple:

<script type="text/javascript">

   Ici un exmple d'utilisation de la méthode getName sur un
   type de vue vue prédéfini : G_PHYSICAL_MAP

   var map = new GMap2(document.getElementById('map'), { size: new GSize(655,300)});
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map
   avec une taille de 655 * 300 pixel */

   map.setMapType(G_PHYSICAL_MAP);

   // Dans cet exemple, nous déclarons un type
   // de carte "terrain".

   var libelle = G_PHYSICAL_MAP.getName();

   // ici, libelle vaudra "Terrain" 

   var libelle = G_PHYSICAL_MAP.getName(true);

   // ici, libelle vaudra "Ter" car short est à true 

</script>

getProjection()

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

Cette méthode retourne l’objet de type GProjection associé au type de carte utilisé.

getTileSize()

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

Cette méthode retourne la taille des “tuiles” ( = la longueur d’un côté) utilisées sur le type de carte en cours. Les “tuiles” représentent chaque image dont l’ensemble constitue une carte Google Map (# pièce du puzzle).
Ces tuiles sont toujours de forme carrée et ont pour dimensions par défaut 256 * 256 px.

getTileLayers()

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

Cette méthode retourne un tableau d’objets de type GTileLayers déclarés pour le type de vue en cours car un type de carte peut disposer de plusieurs couches, comme le type G_HYBRID_MAP par exemple.

getMinimumResolution()

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

Cette méthode retourne le niveau de zoom minimum que le type de carte peut afficher.

getMaximumResolution()

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

Cette méthode retourne le niveau de zoom maximum que le type de carte peut afficher.

getMaxZoomAtLatLng()

Disponible depuis la version 2.158 de l’Api

Signature de la méthode getMaxZoomAtLatLng : getMaxZoomAtLatLng(latlng: GLatLng, callback: Function, opt_targetZoom: number) .

Cette méthode envoie une requête aux serveurs de Google pour retrouver le niveau de zoom maximal pour lequel l’image existe pour le type de vue en cours en un point donné (objet de type GLatLng).

La réponse à cet appel (response) contient un statut et la valeur de zoom demandée si celle-ci a été trouvée.

Si le paramètre opt_targetZoom est défini, seules les valeurs de zoom supérieures à la valeur de ce paramètre seront considérées.

NB : Cette fonctionnalité est disponible uniquement pour l’imagerie par satellite, à savoir les types de vues G_SATELLITE_MAP et G_HYBRID_MAP.

getTextColor()

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

Cette méthode retourne la couleur de texte utilisée sur le type de carte en cours comme pour le texte du copyright par exemple. Les valeurs utilisées peuvent être littérales (black, red, white, …) ou héxadécimales (#cc0000, …).

getLinkColor()

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

Cette méthode retourne la couleur de texte des hyperliens utilisée sur le type de carte en cours comme pour les termes d’utilisations par exemple. Les valeurs utilisées peuvent être littérales (black, red, white, …) ou héxadécimales (#cc0000, …).

getErrorMessage()

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

Cette méthode retourne le message d’erreur qui s’affiche lorsqu’il n’y a plus de vue ou d’image possible à afficher à certain niveau de zoom donné sur la carte.

En règle générale, ce message invite l’utilisateur à effecuter un zoom arrière afin de revenir à une vue où des images sont disponibles.

getCopyrights()

Signature de la méthode getCopyrights : getCopyrights(bounds: GLatLngBounds, zoom: Number) .

Cette méthode retourne le message de copyright approprié pour la région décrite à l’aide de paramètre bounds et du niveau de zoom donné.

getUrlArg()

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

Cette méthode retourne le une chaîne de caractères (ou plutôt un caractère) permettant d’identifier la vue en cours pour l’appeler via une URL. Cet identifiant ne peut servir qu’à des utlisations liées à la carte.

getAlt()

Disponible depuis la version 2.86 de l’Api

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

Cette méthode retourne le texte alternatif associé au type de carte en cours.

Par exemple, pour le type de vue G_PHYSICAL_MAP, la valeur retournée est la suivante : Show street map with terrain.

getHeading()

Disponible depuis la version 2.193 de l’Api

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

Cette méthode retourne la position du type de carte en cours.

Cette position est définie par l’angle de vue du type de carte, dans le sens horaire mesurée en degrés par rapport au Nord, qui lui vaut 0.

Classe GInfoWindowTab

Un tableau d’instances de la classe GInfoWindowTab peut être passé en paramètre (argument tabs (onglets)) aux méthodes GMap2.openInfoWindowTabs(), GMap2.openInfoWindowTabsHtml(), GMarker.openInfoWindowTabs(), GMarker.openInfoWindowTabsHtml(), ainsi qu’aux variantes de GMarker.bindInfoWindow().

Si ce tableau contient plus d’un élément, la fenêtre d’information (info bulle) affichera autant d’onglets que d’éléments présents dans ce tableau.

Chaque objet InfoWindowTab est composé de 2 paramètres, à savoir:

  • content: définit le contenu à afficher lorsque l’onglet est sélectionné.
  • label: définit le titre de l’onglet.

Ces propriétés sont passées comme arguments au constructeur de la classe. Pour la méthode openInfoWindowTabs(), le contenu sera un élément DOM HTML. En revanche, pour la méthode openInfoWindowTabsHtml(), le contenu sera une chaîne de caractères au format HTML.

NB: voir aussi la classe GInfoWindow, la gestion des événements liés aux fenêtres d’information et les options liées aux fenêtres d’information.

constructeur GInfoWindowTab

Signature de la classe GInfoWindowTab :GInfoWindowTab(label: String, content: Node or String).

Cette méthode créé une fenêtre d’information à onglets passés en paramètre lors de l’appel aux méthodes de type openInfoWindowTabs.

Exemple d’utilisation de la classe GInfoWindowTab :

<script type="text/javascript">

   Dans cet exemple, nous ne traitons que la gestion de la classe GInfoWindowTab.
   Il s'agit essentiellement de montrer la manière de renseigner des éléments de type
   GInfoWindowTab à une fenêtre d'information.   

   var myTabs = [
     new GInfoWindowTab('Weboblog', 'All about Google Map Api'),
     new GInfoWindowTab('Google Map', 'Ça se passe sur weboblog.fr')
   ];
   /* Déclaration et remplissage d'un tableau qui contiendra nos objets
   de types GInfoWindowTab pour une fenêtre d'information. */

   /* Ici, notre fenêtre disposera de 2 onglets.
   Le premier aura pour titre Weboblog et pour contenu All about Google Map Api.

   Le second onglet aura quant à lui pour titre Google Map et pour contenu
   Ça se passe sur weboblog.fr.

   NB: l'attribution de cette fenêtre d'information à notre marker (cf ci-dessous)
   déclare le second onglet comme onglet à afficher au chargement avec la propriété:
   selectedTab: 1 */

   GEvent.addListener(marker, "click", function() {
     marker.openInfoWindowTabs(myTabs, {selectedTab: 1, maxWidth: 300});
   });
   /* Attribution de la fenêtre d'information à onglets à
   notre marker, objet de type GMarker.

</script>

 

Exemple d’utilisation de la classe GInfoWindowTab :

La classe GInfoWindowOptions

Les instances de la classe GInfoWindowOptions sont utilisées dans l’argument opts? lors de l’appel aux méthodes openInfoWindow(), openInfoWindowHtml(), openInfoWindowTabs(), openInfoWindowTabsHtml(), les variantes de bindInfoWindow(), et showMapBlowup() des classes GMap2 et GMarker.

Il n’y a pas de constructeur pour cette classe, on l’utilise comme un objet javascript.

NB: voir aussi la classe GInfoWindow, la gestion des événements liés aux fenêtres d’information et la classe GInfoWindowTab qui permet d’afficher des onglets dans l’info bulle.

Voici un exemple de la syntaxe utilisée pour appliquer ces propriétés à une fenêtre d’information:

<script type="text/javascript">

   var myTabs = [];
   myTabs.push([
         new GInfoWindowTab('Weboblog', 'Ou comment pendre en main l'Api Google Map'),
         new GInfoWindowTab('Api Googlemap', 'Sur weboblog.fr')
	]);
   // Ici nous déclarons et remplissons un tableau d'objets GInfoWindowTab
   // qui représenteront les onglets de la fenêtre d'information

   marker.openInfoWindowTabs(myTabs[0], {selectedTab: 1, maxWidth: 300});
   // C'EST ICI QUE NOUS APPLIQUONS LES PROPRIÉTÉS

   // Nous attribuons une fenêtre d'information contenant des onglets
   // à notre marker.
   // La propriété selectedTab passée à 1 stipule qu'à l'ouverture
   // de la fenêtre, le second onglet sera affiché par défaut,
   // c'est-à-dire l'onglet ayant pour titre 'Api Googlemap'.
   // La propriété maxWidth précise quant à elle la largeur maximum
   // pour cette fenêtre. (Ici, 300px).

</script>

selectedTab

Signature de la propriété selectedTab : selectedTab(Nombre). Nombre représente l’indice du tableau d’objets GInfoWindowTab.

Cette propriété permet de préciser quel onglet sera ouvert par défaut lors de l’ouverture de la fenêtre d’information si celle a été construite au moyen de la méthode openInfoWindowTabs.

maxWidth

Signature de la propriété maxWidth : maxWidth(Nombre).

Cette propriété permet de préciser la largeur maximale qu’aura la fenêtre d’information.

noCloseOnClick

Disponible depuis la version 2.83 de l’Api.

Signature de la propriété noCloseOnClick : noCloseOnClick(Booléen).

Cette propriété indique si oui ou non la fenêtre d’information peut être fermée suite à un click sur la carte hors du marker. Passée à true, la fenêtre ne se fermera pas suite à ce click.
La valeur par défaut vaut false (la fenêtre peut se fermer).

onOpenFn

Signature de la propriété onOpenFn : onOpenFn(Fonction).

Cette propriété appelle une fonction une fois que la fenêtre d’information est ouverte et que son contenu est affiché.

onCloseFn

Signature de la propriété onCloseFn : onCloseFn(Fonction).

Cette propriété appelle une fonction une fois que la fenêtre d’information a été fermée.

zoomLevel

Signature de la propriété zoomLevel : zoomLevel(Nombre).

Cette propriété ne fonctionne qu’avec la méthode showMapBlowup.
La valeur Nombre renseigne le niveau de zoom dont bénéficiera la mini-carte affichée dans la fenêtre d’information.

mapType

Signature de la propriété mapType : mapType(GMapType).

Comme pour la propriété zoomLevel, cette propriété ne fonctionne qu’avec la méthode showMapBlowup.
L’objet de type GMapType passé en paramétre précise le type de carte dont bénéficiera la mini-carte affichée dans la fenêtre d’information.

maxContent

Disponible depuis la version 2.93 de l’Api.

Signature de la propriété maxContent : maxContent(Texte).

La valeur contenue dans Texte représente le contenu à afficher lorsque la fenêtre est maximisée (agrandie). Cette valeur peut être au format HTML ou représenter un élément DOM HTML.

maxTitle

Disponible depuis la version 2.93 de l’Api.

Signature de la propriété maxTitle : maxTitle(Texte).

La valeur contenue dans Texte représente le titre à afficher lorsque la fenêtre est maximisée (agrandie). Cette valeur peut être au format HTML ou représenter un élément DOM HTML.

pixelOffset

Disponible depuis la version 2.98 de l’Api.

Signature de la propriété pixelOffset : pixelOffset(GSize).

L’objet GSize passé en paramètre représente le décalage en "x" et en "y" de la fenêtre d’information par rapport à son point d’attache (point représenté par un objet de type GLatLng).

Gestion des événements - GInfoWindow

La gestion des événements liés aux fenêtres d’information permet de déclencher des fonctions ou autre lorsque des actions sont menées au sein de ces fenêtres.

NB: lire aussi la classe GInfoWindow, la classe GInfoWindowTab (affichage d’onglets dans l’info bulle) ainsi que la classe de gestion des options dans l’info bulle (gInfowindowOptions).

Voici un exemple de la syntaxe utilisée pour "écouter" les événements liés à la fenêtre d’information:

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'), { size: new GSize(655,300)});
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map
   avec une taille de 655 * 300 pixel */

   GEvent.addListener(map.getInfoWindow(), 'closeclick', function() {
     alert('La fenêtre d\'information a été fermée');
   });

   // Dans cet exemple, nous déclarons un écouteur d'événements
   // qui déclenche un alert dès que la fenêtre
   // d'information se ferme : événement closeclick sur l'objet map.getInfoWindow().

</script>
Accès direct aux écouteurs d’événements:

closeclick() maximizeclick() maximizeend() restoreclick() restoreend()

closeclick

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

La fonction associée à cet événement est déclenchée lorsque la fenêtre d’information se ferme. Cf exemple ci-dessus.

maximizeclick

Disponible depuis la version 2.93 de l’Api.

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

La fonction associée à cet événement est déclenchée lorsque la fenêtre d’information est sur le point d’être agrandie (maximisée).

maximizeend

Disponible depuis la version 2.93 de l’Api.

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

La fonction associée à cet événement est déclenchée lorsque l’agrandissement de la fenêtre d’information est terminé.

restoreclick

Disponible depuis la version 2.93 de l’Api.

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

La fonction associée à cet événement est déclenchée lorsque l’état de la fenêtre d’information est sur le point d’être restauré (non-maximisé).

restoreend

Disponible depuis la version 2.93 de l’Api.

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

La fonction associée à cet événement est déclenchée lorsque l’état de la fenêtre d’information a été restauré (non-maximisé).

Classe GInfoWindow

La classe GInfoWindow ne dipsose pas de constructeur (il n’est pas nécessaire de la déclarer à l’aide du terme new pour l’utiliser).

NB: lire aussi la gestion des événements liés aux fenêtres d’information, la classe GInfoWindowTab (affichage d’onglets dans l’info bulle) ainsi que la classe de gestion des options dans l’info bulle (gInfowindowOptions).

Pour appliquer les méthodes de la classe GInfoWindow, on utilise la notation suivante:

<script type="text/javascript">

   Ici, suite à un glisser / déposer de la carte (événement dragend = fin du déplacement)
   on rend invisible la fenêtre d'information ouverte, si fenêtre d'information
   ouverte il y a, of course ! ...   

   var map = new GMap2(document.getElementById('map'), { size: new GSize(655,300)});
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map
   avec une taille de 655 * 300 pixel */

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

   // Dans cet exemple, nous déclarons un écouteur d'événements
   // qui déclenche une fonction suite à l'événement dragend = fin de drag / drop.
   // Cette fonction se charge de rendre invisible la fenêtre d'information ouverte
   // sur la carte à l'aide des méthodes getInfoWindow et hide()
   // appliquées sur l'objet map.

</script>

selectTab

Signature de la méthode selectTab : selectTab(index : Number) .

Permet de changer d’onglet actif dans la fenêtre d’information si celle-ci a été construite à l’aide de la méthode openInfoWindowTabs.
L’index correspond à l’indice de l’onglet concerné dans le tableau représentant tous les onglets déclarés dans cette fenêtre d’information.

hide()

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

Permet de rendre la fenêtre d’information invisible suite à un événement détecté sur la carte par exemple. Cf exemple ci-dessus.

show()

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

Permet de rendre la fenêtre d’information visible suite à un événement détecté sur la carte par exemple si cette fenêtre avait rendue invisible auparavant.

isHidden()

Signature de la méthode isHidden : isHidden(booléen) .

Retourne true si la fenêtre d’information est invisible. À noter que cette méthode renverra également true si la fenêtre est fermée.

reset()

Signature de la méthode reset : reset(latlng : GLatLng, tabs : GInfoWindowTab[], size : GSize, offset? : GSize, selectedTab? : Number).

Réinitialise l’état de la fenêtre d’information. Si les différents arguments renseignés lors de l’appel à cette méthode sont à null, les valeurs initiales de la fenêtre d’information ne seront pas modifiés.
À noter qu’il faut renseigner tous les arguments (même à null) pour que la méthode fonctionne.

Par exemple, si vous souhaitez ne modifer que le premier argument (latlng), il faudra appeler la méthode reset de cette façon :

NB : dans cet exemple, nous ne traitons que l’appel à la méthode reset. Le code ci-dessous ne permet donc pas de générer l’exemple illustré, car il nécessite bien entendu plus de lignes de code. Encore une fois, c’est l’exemple de l’appel à notre méthode qui est mis en avant ici.

<script type="text/javascript">

   var map = new GMap2(document.getElementById('map'), { size: new GSize(655,300)});
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map
   avec une taille de 655 * 300 pixel */

   GEvent.addListener(map, "dragend", function() {
     map.getInfoWindow().reset(new GLatLng(48.8566667, 2.3509871),null, null, null);
	 // Équivaut à Paris
   });

   // Dans cet exemple, la fenêtre d'information associée au marker
   // changera de marker à la fin du glisser / déposer de la map.
   // Le nouveau marker associé à cette fenêtre sera le point
   // représentant Paris.

</script>

Exemple d’utilisation de la méthode reset()

Pour constater la mise en évidence de cette méthode, vous devez tout d’abord ouvrir le marker représentant la ville de Brest (le plus à gauche …) puis dragger la carte.
À la fin du drag / drop, la fenêtre qui était associée au point représentant Brest devrait maintenant être associée au point représentant Paris. Si vous la fermez puis la rouvrez en cliquant le marker situé à Brest, cette fenêtre sera à nouveau associée à Brest.

getPoint()

Signature de la méthode getPoint : getPoint(GLatLng) .

Retourne un objet de type GLatLng représentant les coordonnées géographiques du point auquel est associée la fenêtre d’information ouverte sur la map.

getPixelOffset()

Signature de la méthode getPixelOffset : getPixelOffset(GSize) .

Retourne le décalage (objet de type GSize), en pixels, de la pointe de la fenêtre d’information par rapport au point auquel celle-ci est associée.

getSelectedTab()

Signature de la méthode getSelectedTab : getSelectedTab(Number) .

Retourne l’indice de l’onglet affiché lors du chargement de la fenêtre d’information. Si cette fenêtre a été construite avec la méthode openInfoWindow, la méthode getSelectedTab retourne 0.
Si en revanche elle a été construite avec la méthode openInfoWindowTabs (fenêtre contenant des onglets), la méthode retournera l’onglet actif au chargement déclaré au moyen de la propriété selectedTab.

getTabs()

Disponible depuis la version 2.59 de l’Api.

Signature de la méthode getTabs : getTabs(GInfoWindowTab[]) .

Retourne les informations des onglets présents dans la fenêtre d’information sur laquelle s’applique la méthode. Le tableau contient le nom des onglets, leur contenu, les actions définies suite à un click, …

NB: dans cet exemple, survolez la carte avec votre souris pour voir ce que la méthode getTabs peut retourner comme informations liées à la fenêtre ouverte:

getContentContainers()

Disponible depuis la version 2.59 de l’Api.

Signature de la méthode getContentContainers : getContentContainers(Node[]) .

Tout comme la méthode getTabs, la méthode getContentContainers retourne quantité d’informations liées au contenu des onglets présents dans la fenêtre d’informations concernée.

Ci-dessous, un listing des informations retournées par cette méthode pour un élément donné :

scrollWidth:0
clientLeft:0
clientHeight:0
clientWidth:0
clientTop:0
getClientRects:function getClientRects() { [native code] }
getBoundingClientRect:function getBoundingClientRect() { [native code] }
getElementsByClassName:function getElementsByClassName() { [native code] }
baseURI:https://www.weboblog.fr/classe-ginfowindow
textContent:au revoir Paris
compareDocumentPosition:function compareDocumentPosition() { [native code] }
getUserData:function getUserData() { [native code] }
isSameNode:function isSameNode() { [native code] }
lookupNamespaceURI:function lookupNamespaceURI() { [native code] }
setUserData:function setUserData() { [native code] }
lookupPrefix:function lookupPrefix() { [native code] }
isDefaultNamespace:function isDefaultNamespace() { [native code] }
isEqualNode:function isEqualNode() { [native code] }
dispatchEvent:function dispatchEvent() { [native code] }
removeEventListener:function removeEventListener() { [native code] }
style:[object CSSStyleDeclaration]
contentEditable:inherit
offsetParent:null
innerHTML:<div>au revoir Paris</div>
offsetLeft:0
offsetTop:0
offsetHeight:0
offsetWidth:0
className:
id:
title:
tagName:DIV
removeAttributeNS:function removeAttributeNS() { [native code] }
removeAttribute:function removeAttribute() { [native code] }
getAttribute:function getAttribute() { [native code] }
getElementsByTagName:function getElementsByTagName() { [native code] }
setAttribute:function setAttribute() { [native code] }
getElementsByTagNameNS:function getElementsByTagNameNS() { [native code] }
hasAttributeNS:function hasAttributeNS() { [native code] }
setAttributeNS:function setAttributeNS() { [native code] }
hasAttribute:function hasAttribute() { [native code] }
getAttributeNS:function getAttributeNS() { [native code] }
nextSibling:[object HTMLDivElement]
firstChild:[object HTMLDivElement]
prefix:null
nodeValue:null
childNodes:[object NodeList]
nodeName:DIV
namespaceURI:null
previousSibling:[object HTMLImageElement]
nodeType:1
localName:DIV
lastChild:[object HTMLDivElement]
ownerDocument:[object HTMLDocument]
parentNode:[object HTMLDivElement]
attributes:[object NamedNodeMap]
appendChild:function appendChild() { [native code] }
cloneNode:function cloneNode() { [native code] }
normalize:function normalize() { [native code] }
hasChildNodes:function hasChildNodes() { [native code] }
insertBefore:function insertBefore() { [native code] }
replaceChild:function replaceChild() { [native code] }
removeChild:function removeChild() { [native code] }
hasAttributes:function hasAttributes() { [native code] }
isSupported:function isSupported() { [native code] }
getAttributeNode:function getAttributeNode() { [native code] }
setAttributeNode:function setAttributeNode() { [native code] }
removeAttributeNode:function removeAttributeNode() { [native code] }
getAttributeNodeNS:function getAttributeNodeNS() { [native code] }
setAttributeNodeNS:function setAttributeNodeNS() { [native code] }
ELEMENT_NODE:1
ATTRIBUTE_NODE:2
TEXT_NODE:3
CDATA_SECTION_NODE:4
ENTITY_REFERENCE_NODE:5
ENTITY_NODE:6
PROCESSING_INSTRUCTION_NODE:7
COMMENT_NODE:8
DOCUMENT_NODE:9
DOCUMENT_TYPE_NODE:10
DOCUMENT_FRAGMENT_NODE:11
NOTATION_NODE:12
lang:
dir:
align:
tabIndex:-1
draggable:false
blur:function blur() { [native code] }
focus:function focus() { [native code] }
spellcheck:false
getFeature:function getFeature() { [native code] }
DOCUMENT_POSITION_DISCONNECTED:1
DOCUMENT_POSITION_PRECEDING:2
DOCUMENT_POSITION_FOLLOWING:4
DOCUMENT_POSITION_CONTAINS:8
DOCUMENT_POSITION_CONTAINED_BY:16
DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:32
scrollTop:0
scrollLeft:0
scrollHeight:0
firstElementChild:[object HTMLDivElement]
lastElementChild:[object HTMLDivElement]
previousElementSibling:[object HTMLImageElement]
nextElementSibling:[object HTMLDivElement]
childElementCount:1
children:[object HTMLCollection]
querySelector:function querySelector() { [native code] }
querySelectorAll:function querySelectorAll() { [native code] }
scrollWidth:217
clientLeft:0
clientHeight:58
clientWidth:217
clientTop:0
getClientRects:function getClientRects() { [native code] }
getBoundingClientRect:function getBoundingClientRect() { [native code] }
getElementsByClassName:function getElementsByClassName() { [native code] }
baseURI:https://www.weboblog.fr/classe-ginfowindow
textContent:bonjour Paris
compareDocumentPosition:function compareDocumentPosition() { [native code] }
getUserData:function getUserData() { [native code] }
isSameNode:function isSameNode() { [native code] }
lookupNamespaceURI:function lookupNamespaceURI() { [native code] }
setUserData:function setUserData() { [native code] }
lookupPrefix:function lookupPrefix() { [native code] }
isDefaultNamespace:function isDefaultNamespace() { [native code] }
isEqualNode:function isEqualNode() { [native code] }
dispatchEvent:function dispatchEvent() { [native code] }
removeEventListener:function removeEventListener() { [native code] }
style:[object CSSStyleDeclaration]
contentEditable:inherit
offsetParent:[object HTMLDivElement]
innerHTML:<div>bonjour Paris</div>
offsetLeft:16
offsetTop:16
offsetHeight:58
offsetWidth:217
className:
id:
title:
tagName:DIV
removeAttributeNS:function removeAttributeNS() { [native code] }
removeAttribute:function removeAttribute() { [native code] }
getAttribute:function getAttribute() { [native code] }
getElementsByTagName:function getElementsByTagName() { [native code] }
setAttribute:function setAttribute() { [native code] }
getElementsByTagNameNS:function getElementsByTagNameNS() { [native code] }
hasAttributeNS:function hasAttributeNS() { [native code] }
setAttributeNS:function setAttributeNS() { [native code] }
hasAttribute:function hasAttribute() { [native code] }
getAttributeNS:function getAttributeNS() { [native code] }
nextSibling:null
firstChild:[object HTMLDivElement]
prefix:null
nodeValue:null
childNodes:[object NodeList]
nodeName:DIV
namespaceURI:null
previousSibling:[object HTMLDivElement]
nodeType:1
localName:DIV
lastChild:[object HTMLDivElement]
ownerDocument:[object HTMLDocument]
parentNode:[object HTMLDivElement]
attributes:[object NamedNodeMap]
appendChild:function appendChild() { [native code] }
cloneNode:function cloneNode() { [native code] }
normalize:function normalize() { [native code] }
hasChildNodes:function hasChildNodes() { [native code] }
insertBefore:function insertBefore() { [native code] }
replaceChild:function replaceChild() { [native code] }
removeChild:function removeChild() { [native code] }
hasAttributes:function hasAttributes() { [native code] }
isSupported:function isSupported() { [native code] }
getAttributeNode:function getAttributeNode() { [native code] }
setAttributeNode:function setAttributeNode() { [native code] }
removeAttributeNode:function removeAttributeNode() { [native code] }
getAttributeNodeNS:function getAttributeNodeNS() { [native code] }
setAttributeNodeNS:function setAttributeNodeNS() { [native code] }
ELEMENT_NODE:1
ATTRIBUTE_NODE:2
TEXT_NODE:3
CDATA_SECTION_NODE:4
ENTITY_REFERENCE_NODE:5
ENTITY_NODE:6
PROCESSING_INSTRUCTION_NODE:7
COMMENT_NODE:8
DOCUMENT_NODE:9
DOCUMENT_TYPE_NODE:10
DOCUMENT_FRAGMENT_NODE:11
NOTATION_NODE:12
lang:
dir:
align:
tabIndex:-1
draggable:false
blur:function blur() { [native code] }
focus:function focus() { [native code] }
spellcheck:false
getFeature:function getFeature() { [native code] }
DOCUMENT_POSITION_DISCONNECTED:1
DOCUMENT_POSITION_PRECEDING:2
DOCUMENT_POSITION_FOLLOWING:4
DOCUMENT_POSITION_CONTAINS:8
DOCUMENT_POSITION_CONTAINED_BY:16
DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:32
scrollTop:0
crollLeft:0
scrollHeight:58
firstElementChild:[object HTMLDivElement]
lastElementChild:[object HTMLDivElement]
previousElementSibling:[object HTMLDivElement]
nextElementSibling:null
childElementCount:1
children:[object HTMLCollection]
querySelector:function querySelector() { [native code] }
querySelectorAll:function querySelectorAll() { [native code] }

enableMaximize()

Disponible depuis la version 2.93 de l’Api.

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

Permet la maximisation de la fenêtre d’information. Une fenêtre maximisable peut s’élargir jusqu’à remplir l’ensemble de la carte comprenant les contenus spécifiés à l’aide des propriétés maxContent et maxTitle renseignées via la classe GInfoWindowOptions.

NB : pour que cette méthode ait un effet sur la carte, la fenêtre d’information doit avoir été construite en utilisant les options maxContent ou maxTitle. Une fenêtre d’information ouverte avec ces options sera maximisable par défaut.

disableMaximize()

Disponible depuis la version 2.93 de l’Api.

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

Permet de désactiver la maximisation de la fenêtre d’information.

NB : pour que cette méthode ait un effet sur la carte, la fenêtre d’information doit avoir été construite en utilisant les options maxContent ou maxTitle.
À noter que si la fenêtre concernée est ouverte, cette fonction retirera le bouton "maximiser" mais ne restaurera pas la fenêtre à son état initial, c’est-à-dire minimal
.

maximize()

Disponible depuis la version 2.93 de l’Api.

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

Permet de maximiser la fenêtre d’information. En d’autres termes, l’agrandir pour afficher son contenu intégral.

NB : pour que cette méthode ait un effet sur la carte, la fenêtre d’information doit avoir été construite en utilisant les options maxContent ou maxTitle.
À noter que sa "maximisation" ne doit pas avoir été désactivée via la méthode disableMaximize
.

Exemple d’utilisation de la méthode maximize: dans cet exemple, cliquez sur le bouton “+” afin de lire le contenu intégral de la fenêtre d’information:

restore()

Disponible depuis la version 2.93 de l’Api.

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

Permet de restaurer la fenêtre d’information à son état initial ou non-maximisé.

NB : pour que cette méthode ait un effet sur la carte, la fenêtre d’information doit avoir été construite en utilisant les options maxContent ou maxTitle.

Personnaliser les markers

Pour personnaliser les markers sur la Google Map, il existe les classes GMarkerOptions et GIcon.

Dans un premier temps, il faut tout d’abord créer un Marker avec la classe GMarker puis renseigner une icône personnalisée (objet de type GIcon) comme paramètre optionnel du marker (classe GMarkerOptions).

Personnalisation d’un marker sur la Google Map

<script type="text/javascript">

   Cette fonction affiche un marker sur la carte :
   Ce marker sera déplaçable et aura pour attribut title :
   Ceci est mon marker perso + le nom de la ville
   L'icône le représentant est ici personnalisée.

   function addThisMarker(point, myIcon, ville){
     var marker = new GMarker(point, {icon : myIcon, draggable : true,
				     title : 'Ceci est mon marker perso : ' + ville});
     /* Création du marker. Ce marker est déplaçable. (draggable : true)
     et dispose d'un titre qui s'affichera au survol de ce marker */
     return marker;
   }    

   var myIcon = new GIcon(G_DEFAULT_ICON, "arrow_bg_inv.png");
   // Déclaration de notre icône personnalisée avec l'image arrow_bg_inv.png
   myIcon.iconSize = new GSize(35,35);
   // Redimensionnement de l'icône (35*35)
   myIcon.dragCrossSize = new GSize(32,32);
   // Redimensionnement de la croix située sous le marker
   // pendant son déplacement (32*32)
   myIcon.imageMap = new Array[0, 0, 0, 35, 35,35, 35, 0];
   // Déclaration de la zone réactive sur le marker
   myIcon.shadow = '';
   // Ici, le marker n'aura pas d'ombre
   myIcon.iconAnchor = new GPoint(26,1);
   // Le point d'accroche de l'icône représentant le marker
   // sera décalé de 26px vers la gauche et de 1px vers le haut

   var map = new GMap2(document.getElementById('map'), { size: new GSize(655,300)});
   /* Ici, nous déclarons l'élément html ayant pour id "map" comme conteneur de la map
   avec une taille de 655 * 300 pixel */

   var myPoints = [];
   /* Déclaration du tableau qui contiendra nos points, objets GLatLng. */

   var bounds = new GLatLngBounds();
   /* Instanciation de la classe GLatLngBounds */

   myPoints.push( new GLatLng(48.8566667, 2.3509871)); // Paris
   myPoints.push( new GLatLng(48.3906042, -4.4869013)); // Brest
   myPoints.push( new GLatLng(50.6371834, 3.0630174)); // Lille 
   /* On remplit notre tableau  */

   var villePoint = [];
   villePoint.push('Paris');
   villePoint.push('Brest');
   villePoint.push('Lille');
   // Association du nom de la ville au marker

   for(var i = 0; i < myPoints.length; i++){
     bounds.extend(myPoints[i]);
     var thisMarker = addThisMarker(myPoints[i], myIcon, villePoint[i]);
     map.addOverlay(thisMarker);
   }
   /* Extension des limites de la carte afin d'y insérer tous les points
   On ajoute également un marker pour chacun
   de ces points sur la carte   */ 

   On peut ensuite utiliser une méthode map State de la classe GMap2
   intitulée getBoundsZoomLevel qui récupère le zoom nécessaire pour afficher
   la carte en fonction de ses limites.

   var newZoom = map.getBoundsZoomLevel(bounds);

   De la même manière, on récupère le centre de la région (objet GLatLngBounds)
   à l'aide de la méthode getCenter().

   var newCentre = bounds.getCenter();

   Il suffit ensuite d'initialiser la carte avec ces éléments.

   map.setCenter(newCentre, newZoom);

</script>

visualisation des markers personnalisés

Classe GIcon

Une icône (objet de type GIcon) spécifie l’image utilisée pour afficher un marker sur la map.
Pour des raisons de compatibilité entre navigateurs, spécifier une icône spécifique peut s’avérer parfois assez complexe. À noter qu’il est possible d’utiliser l’icône par défaut (G_DEFAULT_ICON) si vous ne souhaitez pas spécifier les vôtres.

Exemple d’utilisation de la classe GIcon :

<script type="text/javascript">

   Dans cet exemple, nous ne traitons que la gestion de la classe GIcon.
   Il s'agit essentiellement de montrer la manière de modifier les propriétés d'une icône,
   notamment à l'aide de la notation pointée.   

   var myIcons = [];
   // Déclaration du tableau qui contiendra nos icônes

   // Ici, nous modifions l'icône du marker ayant pour indice 3
   myIcons[3] = new GIcon(G_DEFAULT_ICON, "chemin_jusque_l_image_désirée");
   // Déclaration de l'image à afficher pour le marker
   // L'image est déclarée par son chemin

   myIcons[3].iconSize = new GSize(26,28);
   // Déclaration de la taille de l'icône
   // Ici, l'image représentant l'icône aura pour dimensions 26px * 28px

   myIcons[3].shadow = '';
   // Déclaration de l'image à afficher pour l'ombre de l'icône.
   // Dans cet exemple, il n'y aura pas d'ombre pour l'icône

   myIcons[3].iconAnchor = new GPoint(9,16);
   // Déclaration du point d'ancrage de l'icône par rapport
   // au point représenté par le marker.
   // Dans notre exemple, l'icône sera décalée de 9px vers la droite
   // et de 16px vers le haut.

   myIcons[3].infoWindowAnchor = new GPoint(9,9);
   // Déclaration du point d'ancrage de la fenêtre d'information
   // associée au marker par rapport au point représenté par ce marker.
   // La fenêtre sera ici décalée de 9px vers la droite et de 9px vers le haut
   // par rapport à l'icône.

</script>

constructeur GIcon

Construction d’un objet de type GIcon : GIcon(copy?: GIcon, image?: String) .

Permet d’attribuer une icône spécifique au marker à l’aide du paramètre image défini par son chemin. Si cette propriété n’est pas renseignée, l’icône par défaut (G_DEFAULT_ICON) sera utilisée.

G_DEFAULT_ICON

Cette constante représente l’icône par défaut utilisée pour les markers.

image

Comme stipulé plus haut, la propriété image renseigne l’image à utiliser pour représenter le marker. Il faut la définir à l’aide de son chemin.

shadow

La propriété shadow renseigne l’image à utiliser pour représenter l’ombre de l’icône qui représente le marker. Il faut la définir à l’aide de son chemin.

iconSize

Signature de la propriété iconSize : iconSize(GSize);

La propriété iconSize permet de définir la taille en pixels de l’icône (propriété image) qui illustre le marker.

shadowSize

Signature de la propriété shadowSize : shadowSize(GSize);

La propriété shadowSize permet de définir la taille en pixels de l’image représentant l’ombre(propriété shadow) de l’icône (propriété image) du marker.

iconAnchor

Signature de la propriété iconAnchor : iconAnchor(GPoint);

La propriété iconAnchor permet de définir en pixels la position de l’icône (de son point d’ancrage) par rapport au point représenté par l’objet de type GMarker.

infoWindowAnchor

Signature de la propriété infoWindowAnchor : infoWindowAnchor(GPoint);

La propriété infoWindowAnchor permet de définir en pixels la position de la fenêtre d’information (objet de type GInfoWindow) associée au marker.

printImage

Signature de la propriété printImage : printImage(String);

La propriété printImage permet de renseigner une autre icône pour l’impression de la map pour les navigateurs incapables de gérer le type d’icône associé au marker. Typiquement, certaines versions d’Internet Explorer sont incapables de gérer les png.
Dans ce cas, l’image définie à l’aide de la propriété printImage sera utilisée pour l’impression. À noter que les navigateurs capables de gérer le type d’image renseigné pour représenter l’icône ne tiendront pas compte de cette alternative.

mozPrintImage

Signature de la propriété mozPrintImage : mozPrintImage(String);

La propriété mozPrintImage permet de renseigner une autre icône pour l’impression de la map pour les navigateurs incapables de gérer le type d’icône associé au marker. Certaines anciennes versions de Firefox / Mozilla sont incapables de gérer des images transparentes pour l’impression.
Dans ce cas, l’image définie à l’aide de la propriété mozPrintImage sera utilisée pour l’impression. À noter que les navigateurs capables de gérer le type d’image renseigné pour représenter l’icône ne tiendront pas compte de cette alternative.

printShadow

Signature de la propriété printShadow : printShadow(String);

La propriété printShadow propose les mêmes fonctionnalités que les propriétés printImage et mozPrintImage mais pour l’image représentant l’ombre de l’icône.

transparent

Signature de la propriété transparent : transparent(String);

La propriété transparent définit l’url d’une image “virtuelle” transparente pour représenter l’icône utilisée pour capturer les événements liés aux clicks sous Internet Explorer. Cette image doit être au format PNG (24 bits) avec une opacité de 1% mais de la même forme et de la même taille que l’icône principale.

imageMap

Signature de la propriété imageMap : imageMap(Number[]);

La propriété imageMap définit un tableau de nombres représentant les coordonnées x / y de l’icône. Ces coordonnées définissent une surface qui représente la zone cliquable de l’icône dans les navigateurs autres que Internet Explorer.

maxHeight

Signature de la propriété maxHeight : maxHeight = Integer.

La propriété maxHeight définit en pixels la hauteur maximum à laquelle doit s’élever le marker lorsque celui est déplacé. Voir la méthode draggable pour plus d’informations.

dragCrossImage

Signature de la propriété dragCrossImage : dragCrossImage = String.

La propriété dragCrossImage permet de définir une image spécifique pour représenter la croix liée au marker lorsque celui-ci est en cours de décplacement. Voir la classe GMarkerOptions pour plus d’informations.

dragCrossSize

Signature de la propriété dragCrossSize : dragCrossSize (GSize).

La propriété dragCrossSize permet de définir la taille de l’image représentant la croix liée au marker lorsque celui-ci est en cours de décplacement. Voir la classe GMarkerOptions pour plus d’informations.

dragCrossAnchor

Signature de la propriété dragCrossAnchor : dragCrossAnchor (GPoint).

La propriété dragCrossAnchor permet de définir la position en pixels de l’image représentant la croix liée au marker lorsque celui-ci est en cours de décplacement. Voir la classe GMarkerOptions pour plus d’informations.

Classe GMarkerManagerOptions

Les instances de la classe GMarkerManagerOptions représentent les arguments optionnels de la classe GMarkerManager.

Il n’y a pas de constructeur pour cette classe, elle est instanciée comme un objet javascript.

NB : voir aussi la classe GMarkerManager, la classe GMarker, la gestion d’événements liés aux markers et les options du constructeur GMarker.

Accès direct propriétés:

borderPadding maxZoom trackMarkers

borderPadding

Depuis la version 2.67 de l’Api Google Map.

Signature borderPadding : borderPadding(type: Nombre) .

Spécifie en pixels le padding extérieur de la vue courante de la carte gérée par le manager. Les markers inclus dans ce padding sont ajoutés à la carte même s’ils ne sont pas entièrement visibles.

maxZoom

Depuis la version 2.67 de l’Api Google Map.

Signature maxZoom : maxZoom(type: Nombre) .

Spécifie le zoom maximum géré par le gestionnaire de markers. Si ce dernier n’est pas renseigné, le manager récupère le zoom maximum de la map.
Cette valeur est également utilisée quand des markers sont ajoutés au gestionnaire de markers sans que ce paramètre optionnel ne soit renseigné.

trackMarkers

Depuis la version 2.67 de l’Api Google Map.

Signature trackMarkers : trackMarkers(type: Booléen) .

Spécifie si le gestionnaire de marker doit suivre ou non les mouvements de ce marker.
Si vous souhaitez déplacer les markers gérés par le gestionnaire en utilisant la méthode setPoint, cette option doit être renseignée à true. Par défaut, cette valeur est égale à false.

Classe GMarkerManager

Les instances de la classe GMarkerManager sont utilisées pour gérer l’apparence de centaines de markers situés sur la vue et le zoom courants. Cependant, cette classe est obsolète.
Il est donc recommandé aux développeurs d’utiliser la librairie open source GMarkerManager à la place.

NB : voir aussi la classe GMarkerManagerOptions.

Accès direct aux méthodes, constructeur et événement:

constructeur GMarkerManager addMarkers() addMarker() refresh() getMarkerCount() changed()

Constructeur GMarkerManager

Depuis la version 2.67 de l’Api Google Map.

Signature GMarkerManager : GMarkerManager(map: GMap, opts?: GMarkerManagerOptions) .

Créé une nouvelle interface de gestion de markers qui contrôle l’apparence des markers pour la map en question.

addMarkers()

Depuis la version 2.67 de l’Api Google Map.

Signature addMarkers : addMarkers(markers: GMarker[], minZoom: Nombre, maxZoom?: Nombre) .

Ajoute un lot de markers au gestionnaire de markers. Tant que la méthode refresh() n’est pas appelée, les markers ne sont pas affichés sur la carte.

Une fois appelée, les markers sont affichés s’ils sont inclus dans la vue courante (par rapport au Zoom notamment) et si le zoom courant de la map est supérieur ou égal au minZoom spécifié.

Si le paramètre maxZoom a été renseigné, les markers concernés sont automatiquement supprimés de la carte si le zoom courant de celle-ci est supérieur à la valeur de maxZoom spécifiée.

addMarker()

Depuis la version 2.67 de l’Api Google Map.

Signature addMarker : addMarker(marker: GMarker, minZoom: Nombre, maxZoom?: Nombre) .

Ajoute un marker au gestionnaire de markers concerné. Si l’emplacement du marker est inclus dans la vue courant de la carte et que le zoom courant de la carte est inclus dans l’intervalle de zoom spécifié ([minZoom - maxZoom]), le marker est immédiatemment ajouté à la carte.

De la même manière que la méthode addMarkers, les arguments minZoom et maxZoom définissent si le niveau de zoom courant de la carte autorise l’affichage du marker.

refresh()

Depuis la version 2.67 de l’Api Google Map.

Signature refresh : refresh() .

La méthode refresh() force le gestionnaire de markers à mettre à jour les markers à afficher sur la map. Cette méthode doit être appelée si les markers ont été ajoutés au moyen de la méthode addMarkers().

getMarkerCount()

Depuis la version 2.67 de l’Api Google Map.

Signature getMarkerCount : getMarkerCount(zoom: Nombre) .

La méthode getMarkerCount retourne le nombre de markers potentiellement visibles avec le zoom courant de la carte affichée. Ce résultat peut inclure des markers affichés avec un zoom inférieur.

changed()

Signature changed : changed(bounds: GBounds, markerCount: Nombre) .

L’événement concerné est déclenché lorsque le gestionnaire de markers est ajouté ou supprimé de la map.

La fonction appelée suite à cet événement doit être prête à recevoir 2 arguments :

  • Le premier étant le rectangle défini par les limites de la map
  • Le second comprenant le nombre de markers visibles sur la carte

Les options des markers

Les instances de la classe GMarkerOptions sont utilisées via le paramètre optionnel opts? du constructeur GMarker.

Il n’y a pas de constructeur pour cette classe, elle instanciée comme un objet javascript.

NB : Toutes les propriétés listées ci-dessous sont optionnelles.
Voir aussi la gestion des événements liés aux markers et le contructeur GMarker.

Exemple d’utilisation : appliquer les paramètres optionnels à un marker.

<script type="text/javascript">

   Exemple d'une fonction affichant un marker sur la carte :
   Ce marker sera déplaçable et aura pour attribut title : Ceci est mon marker

   function addThisMarker(point){
     var marker = new GMarker(point, {draggable : true, title : 'Ceci est mon marker'});
     /* Création du marker. Ce marker est déplaçable. (draggable : true)
     et dispose dun titre qui s'affichera au survol de ce marker */
     return marker;
   }         

</script>

icon

Depuis la version 2.50 de l’Api Google Map.

Propriété icon : type GIcon.

Permet d’attribuer une icône spécifique au marker. Si cette propriété n’est pas renseignée, l’icône par défaut (G_DEFAULT_ICON) sera utilisée.

dragCrossMove

Depuis la version 2.63 de l’Api.

Propriété dragCrossMove : type booléen.

Lorsque qu’un marker est déplacé normallement, le marker se soulève et s’écarte légèrement de la croix (embase du marker). En passant la paramètre dragCrossMove à true, le marker reste “accroché” à son embase.
Par défaut, cette valeur est à false.

title

Depuis la version 2.50 de l’Api.

Propriété title : type string.

Permet d’attribuer un titre au marker au survol de celui-ci. Cette propriété fonctionne comme l’attribut title d’un élément HTML classique.

clickable

Depuis la version 2.50 de l’Api.

Propriété clickable : type booléen.

Permet de désactiver un marker. Les markers non cliquables et non déplaçables sont inactifs, consomment moins de ressources et ne réagissent pas aux événements. La valeur par défaut est à true, c’est-à-dire que le marker sera actif.

draggable

Depuis la version 2.61 de l’Api.

Propriété draggable : type booléen.

Permet de rendre un marker déplaçable sur la map par l’utilisateur. Les markers déplaçables (draggable) requièrent plus de ressources. À noter qu’un marker déplaçable sera aussi cliquable.

bouncy

Depuis la version 2.61 de l’Api.

Propriété bouncy : type booléen.

Lorsque l’on déplace un marker, celui-ci “rebondit” quand on le relâche. La propriété bouncy passée à false permet d’empêcher ce rebondissement. Par défaut, cette valeur est à true.

bounceGravity

Depuis la version 2.61 de l’Api.

Propriété bounceGravity : type nombre.

Lorsque l’on déplace un marker, celui-ci “rebondit” quand on le relâche. La propriété bounceGravity permet de gérer la “vitesse de rebondissement du marker” . Par défaut sa valeur est à 1. Plus cette valeur est basse, plus le rebondissement du marker une fois relâché sera lent (et inversement).

autoPan

Depuis la version 2.87 de l’Api.

Propriété autoPan : type booléen.

Lorsque l’on déplace un marker aux abords de la carte, celle-ci se recentre et se déplace afin de suivre le marker. En renseignant à false la propriété autoPan, la carte restera fixe lorsque que l’utilisateur souhaitera sortir le marker des limites de la carte.
Par défaut, cette valeur est à true (la carte suit le marker).

zIndexProcess

Depuis la version 2.98 de l’Api.

Propriété zIndexProcess : type Fonction.

Cette fonction est utilisée pour changer l’ordre des z-index des markers lorsque ces derniers sont superposés sur la carte et aussi à l’ouverture des fenêtres d’information associées aux markers.

L’ordre par défaut est le suivant:

Plus les points sont situés au Sud de la map, plus leur z-index est élevé.

Cette fonction est passée dans l’objet GMarker et retourne un nombre indiquant le nouvel indice du z-index.

hide

Depuis la version 2.139 de l’Api.

Propriété hide : type booléen.

Si cette valeur est à true, elle indique que la carte n’affichera pas le marker nativement. Il faudra alors utiliser la proriété show() pour rendre visible le marker.

Gestion des événements liés aux markers

Afin d’interagir avec les markers de la Google Map, l’Api propose différentes méthodes pouvant déclencher des fonctions suite aux événements enregistrés sur la map (notamment en fonctions des actions de l’utilisateur).

Ci-dessous, vous pouvez consulter une liste des différents événements pris en compte sur la Google Map concernant les markers.

NB: Tous ces événements se déclenchent si le marker concerné n’a pas été rendu inactif lors de sa construction / déclaration.

NB: lire aussi les options des markers.

Pour l’utilisation de ces écouteurs d’événements, il est courant d’utiliser la méthode GEvent.addListener de la manière suivante:

<script type="text/javascript">

   Exemple d'une fonction créant un marker sur la carte :

   function addThisMarker(point){
     var marker = new GMarker(point, {draggable : true});
     // Création du marker. À noter que celui est déplaçable. (draggable : true)
     GEvent.addListener(marker, "EVENEMENT", function() {
       // Action à réaliser suite à l'événement détecté sur le marker
       ...
     });
     return marker;
   }         

</script>

click()

La signature de la méthode click :
click(latlng:GLatLng) .

L’événement associé se déclenche dès que l’utilisateur clique sur le marker concerné.
NB: L’événement click peut également être appliqué sur la carte elle-même.

dblclick()

La signature de la méthode dblclick :
dblclick(latlng:GLatLng) .

L’événement associé se déclenche dès que l’utilisateur double-clique sur le marker concerné.
NB: L’événement dblclick ne peut pas être appliqué sur la carte elle-même, car cette action a un effet spécifique. Elle effectue un zoom sur la carte en la centrant sur l’endroit qui a été double-cliqué.

mousedown()

La signature de la méthode mousedown :
mousedown(latlng:GLatLng) .

L’événement associé se déclenche lorsque le bouton gauche de la souris est enfoncé (= début de click).
NB: L’action mousedown sur un marker bloque les autres événements liés à cette action (mousedown) sur la carte. La carte ne sera donc plus draggable tant que le bouton gauche de la souris n’aura pas été relâché.

mouseup()

La signature de la méthode mouseup :
mouseup(latlng:GLatLng) .

L’événement associé se déclenche lorsque le bouton gauche de la souris est relâché (= fin de click).

mouseover()

La signature de la méthode mouseover :
mouseover(latlng:GLatLng) .

L’événement associé se déclenche lorsque la souris survole le marker.

mouseout()

La signature de la méthode mouseout :
mouseout(latlng:GLatLng) .

L’événement associé se déclenche lorsque la souris quitte le marker.

infowindowopen()

La signature de la méthode infowindowopen :
infowindowopen() .

L’événement associé se déclenche lorsque la fenêtre associée à ce marker s’ouvre.

infowindowbeforeclose()

La signature de la méthode infowindowbeforeclose :
infowindowbeforeclose() .

L’événement associé se déclenche juste avant que la fenêtre associée à ce marker ne se ferme.

infowindowclose()

La signature de la méthode infowindowclose :
infowindowclose() .

L’événement associé se déclenche lorsque la fenêtre associée à ce marker se ferme. Elle se déclenche également lorsque la fenêtre associée à un autre marker s’ouvre car une seule fenêtre d’information ne peut être ouverte à la fois.
NB: à noter que l’action infowindowbeforeclose se déclenche juste avant celle-ci.

remove()

La signature de la méthode remove :
remove() .

L’événement associé se déclenche lorsque le marker est retiré de la carte au moyen de GMap2.removeOverlay() ou GMap2.clearOverlays().

dragstart()

La signature de la méthode dragstart :
dragstart(latlng:GLatLng) .

Si le marker concerné est déplaçable (draggable: true), l’événement associé se déclenche lorsque le déplacement de ce marker commence.

drag()

La signature de la méthode drag :
drag(latlng:GLatLng) .

Si le marker concerné est déplaçable (draggable: true), l’événement associé se déclenche pendant le déplacement de ce marker.

dragend()

La signature de la méthode dragend :
dragend(latlng:GLatLng) .

Si le marker concerné est déplaçable (draggable: true), l’événement associé se déclenche lorsque le déplacement de ce marker s’arrête.

visibilitychanged()

La signature de la méthode visibilitychanged :
visibilitychanged(isVisible:Boolean).

L’événement associé se déclenche lorsque la visibilité de ce marker change (s’il était invisible et que son statut passe à visible ou inversement).