Api Google Maps Version 2
Controle
PERSONNALISER UN BOUTON DRAGZOOM

Api Google Maps Version 2  flèche Controle  flèche Créer un bouton DragZoom personnalisé - Sélectionner une zone à zoomer avec votre souris.

PERSONNALISER UN BOUTON DRAGZOOM

Attention :

L'API Google Maps Javascript Version 2 a été officiellement déclarée obsolète le 19 mai 2010 par Google. Elle continuera, cependant, à fonctionner durant encore trois ans, à compter de cette date, conformément à la politique de dépréciation de Google.

TouraineVerte.com ne diffusera plus de d'exemples ni de tutoriels sur cette version de l'API.

L'API Google Maps Javascript Version 3 est désormais la version officielle.

  Article créé le : 16/02/2009
 

Présentation

Dans cet exemple, nous allons créer une carte dotée d'un nouveau bouton appelé "DragZoom" personnalisé grâce aux options offertes par DragZoomControl().

Dans un premier temps, nous allons modifier l'apparence graphique du bouton "DragZoom".

Il comporte deux états :

Etat non activé Etat activé Bouton Retour
Cliquez ici pour activer le controle
A l'aide de votre souris déterminez la zone à zoomer
Afficher la carte précédente (avant le zoom)

Après avoir cliqué sur le bouton "DragZoom" à l'état non activé :

  • celui-ci change d'apparence pour passer à l'état activé.
  • La carte se couvre d'un voile rouge, et le curseur, lors du survol de la carte, se transforme en une croix.
    • Pour zoomer en avant : Cliquez avec le bouton gauche de votre souris sur la carte, maintenez le bouton de votre souris enfoncé, et déplacez la, afin de définir la zone de la carte que vous souhaitez zoomer (rectangle bordé de vert).
    • Pour zoomer en arrière : Cliquez avec le bouton droit de votre souris sur la carte, maintenez le bouton de votre souris enfoncé, et déplacez la, afin de définir la zone de la carte que vous souhaitez zoomer (rectangle bordé de vert).
  • Une fois la zone sélectionnée, relachez le bouton de votre souris.
  • Si la zone sélectionnée est supérieur ou égale à 20 pixels alors le zoom sur la carte est executé, et le rectangle de sélection persiste 2 secondes avant de disparaître. Sinon le zoom n'est pas effectué, le voile rouge disparaît et le bouton "DragZoom" repasse alors à l'état non activé
  • Le bouton "DragZoom" repasse alors à l'état non activé et le voile rouge disparaît.
  • Un nouveau bouton (Bouton Retour) apparait sous le bouton DragZoom. Si vous cliquez dessus, la carte précédent le zoom sera de nouveau affichée, et le Bouton Retour disparaitra.

La source du fichier dragzoom.js, nécessaire au fonctionnement de ce bouton, est téléchargeable ici

Carte

Aucune action actuellement sur le dragzoom

DragZoomControl : Les options

DragZoomControl(DragZoomBoxStyleOptions, DragZoomOtherOptions, DragZoomCallbacks)

La classe DragZoomBoxStyleOptions

Elle comporte 3 propriétés :

Propriété Type Description
opacity Nombre de 0 à 1 : degrés d'opacité du voile se superposant à la carte. Par défaut : 0.2,
fillColor Chaîne Couleur du voile se superposant à la carte lorsque le bouton "DragZoom" est activé. Par défaut : "#000",
border Chaîne Caractéristiques (épaisseur, type, couleur) de la bordure délimitant la zone à zoomer. Par défaut : "2px solid blue".

La classe DragZoomOtherOptions

Elle comporte 12 propriétés :

Propriété Type Description
buttonHTML Chaine Bouton "DragZoom" dans son état initial (Format HTML). On peut mettre du texte par exemple ("Zoom glissant"), ou le chemin vers une image ("<img src='http://www.touraineverte.com/aide-documentation-exemple-tutoriel-didacticiel/images/51/zoom-button.gif' />") Par défaut : "zoom...",
buttonStartingStyle Objet Style CSS commun au Bouton "DragZoom" dans son état initial et dans son état activé. Par défaut : {width: '52px', border: '1px solid black', padding: '2px'},
buttonStyle Objet Style CSS appliqué au Bouton "DragZoom" dans son état initial . Par défaut : {background: '#FFF'},
buttonZoomingHTML Chaine Bouton "DragZoom" dans son état activé (Format HTML). On peut mettre du texte par exemple ("Sélectionnez la zone à zoomer"), ou le chemin vers une image ("<img src='http://www.touraineverte.com/aide-documentation-exemple-tutoriel-didacticiel/images/51/zoom-button-activated.gif' />") Par défaut : "Drag a region on the map",
buttonZoomingStyle Objet Style CSS appliqué au Bouton "DragZoom" dans son état activé. Par défaut : {background: '#FF0'},
backButtonHTML Chaine HTML placé sur le bouton retour, lorsque le bouton est activé. Par défaut : "Drag Zoom Back".
backButtonStyle Objet Propriétés CSS appliquées au bouton retour, lorsque celui-ci est activé. Par défaut : {background: '#FFF', display: 'none'}.
backButtonEnabled Booléen Détermine si oui ou non les fonctionnalités liées au bouton Retour sont activées. Le bouton Retour de DragZoom, lorsqu'il est activé, permet à l'utilisateur de retrouver, par un simple click, la carte dans l'état où elle était avant l'exécution du zoom. Par défaut : false.
overlayRemoveTime Nombre Durée de persistance, en millisecondes, de la zone de sélection, une fois le zoom effectué. Par défaut : 6000 (= 6 secondes),
stickyZoomEnabled Booléen Si à true, l'utilisateur peut zommer à plusieurs reprises sur la carte. Une fois les zooms terminés il devra à nouveau cliquer sur le bouton "dragzoom" pour mettre fin à l'action du contrôle. Par défaut : false.
rightMouseZoomOutEnabled Booléen Si à true, permet d'effectuer un zoom arrière avec le bouton droit de la souris. Par défaut : false.
minDragSize Nombre Permet de définir la taille minimum, en pixels, de la zone sélectionnée, à partir de laquelle le zoom sur la carte sera autorisé, puis déclenché.Par défaut : 0

La classe DragZoomCallbacks

Elle comporte 5 propriétés :

Propriété Type Description
buttonclick:function(){Code_A_Executer} Fonction Exécute "Code_A_Executer" lorqu'un click sur le bouton "DragZoom" est détecté.
dragstart:function(){Code_A_Executer} Fonction Exécute "Code_A_Executer" au début du déplacement de votre souris pour sélectionner la zone à zoomer. Retourne les coordonnées du point cliqué.
dragging:function(){Code_A_Executer} Fonction Exécute "Code_A_Executer" tout au long du déplacement de votre souris, pour sélectionner la zone à zoomer. Retourne les coordonnées du point cliqué (X-débutZoom et Y-débutZoom) et les coordonnées actuelles du point glissant (X-actuelZoom et Y-actuelZoom).
dragend:function(){Code_A_Executer} Fonction Exécute "Code_A_Executer" lorsque la fin du déplacement de votre souris pour sélectionner la zone à zoomer, est détectée.
backbuttonclick:function(){Code_A_Executer} Fonction Called after the map context is restored as a result of clicking the DragZoom back button or by calling the initiateZoomBack() method. Callback arg: method (boolean) -- set true if this backbuttonclick was to restore context set by the saveMapContext(text) method, else false.

Exemple :


var optionsStyleVoile = {

	opacity: .1,

	fillColor: "#f00",

	border: "1px solid green"

};



var OptionsBouton = {

	backButtonEnabled: true,

	backButtonHTML: "<img src='http://www.touraineverte.com/aide-documentation-exemple-tutoriel-didacticiel/images/51/zoom-button-return.gif' title='Cliquez ici afficher la carte précédente' alt='Bouton Retour' />",

	buttonHTML: "<img src='http://www.touraineverte.com/aide-documentation-exemple-tutoriel-didacticiel/images/51/zoom-button.gif' title='Cliquez ici pour activer le Dragzoom' alt='Bouton Dragzoom' />",

	buttonZoomingHTML: "<img src='http://www.touraineverte.com/aide-documentation-exemple-tutoriel-didacticiel/images/51/zoom-button-activated.gif' title='Sélectionnez avec votre souris la zone à zoomer' alt='Dragzoom activé' />",

	buttonStartingStyle: {width: '24px', height: '24px'},

	overlayRemoveTime: 2000,	stickyZoomEnabled: false,

	rightMouseZoomOutEnabled: true,	minDragSize: 20

}



var DetectionEvenementDragZoom = {

	buttonclick: function(){document.getElementById("actionEnCours").innerHTML += "<br /><em>Vous venez de cliquer sur le bouton DragZoom</em>"},

	dragstart: function(){document.getElementById("actionEnCours").innerHTML += "<br /><em>Début de la sélection de la zone à zoomer . . .</em>"},

	dragging: function(x1,y1,x2,y2){document.getElementById("actionEnCours").innerHTML += "<br /><em>Coordonnées du point initial</em> : x1="+x1+",y1="+y1+" - <em>Coordonnées du curseur</em> : x2="+x2+",y2="+y2},

	dragend: function(nw,ne,se,sw,nwpx,nepx,sepx,swpx){document.getElementById("actionEnCours").innerHTML += "<br /><em>Zone à zoomer</em> : NE="+ne+";SW="+sw}

};



maCarte.addControl(new DragZoomControl(optionsStyleVoile, optionsBouton, detectionEvenementDragZoom));

Vous pouvez également consulter les pages ci-dessous.

Code

Code : Dragzoom personnalisé Sans Google Ajax API Loader

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Touraineverte.com - Google Maps Api - Controle - DragZoom - addControl - Créer un bouton DragZoom personnalisé</title>
<!-- Chargement du script Google Maps, version 2.x, en précisant votre clé -->
<script src="http://maps.google.com/maps?file=api&v=2.x&key=Inserez_Votre_Clef_API_Ici&sensor=false"
type="text/javascript"></script>
<!-- Chargement du script dragzoom.js -->
<script src="http://gmaps-utility-library.googlecode.com/svn/trunk/dragzoom/1.3/src/dragzoom.js" type="text/javascript"></script>
<script type="text/javascript">
/* Déclaration des variables globales */
var maCarte;
/* Fonction initialize() */
function initialize() {
/* Si le navigateur est compatible avec l'API de Google Maps ... */
if (GBrowserIsCompatible()) {
/* ... Création d'une nouvelle carte nommée "maCarte" qui s'affichera à l'intérieur de la balise <div> ayant pour identifiant id="EmplacementDeMaCarte" ... */
var maCarte = new GMap2(document.getElementById("EmplacementDeMaCarte"));
maCarte.addControl(new GMenuMapTypeControl());
maCarte.addControl(new GSmallMapControl());
/* ... La carte nommée "maCarte" est centrée sur la Latitude 47.394966, la Longitude 0.680423, avec un niveau de zoom égal à 9 ... */
maCarte.setCenter(new GLatLng(47.394966,0.680423), 9);
 
/* Options voile et zone de sélection */
var optionsStyleVoile = {
	/* Opacité du voile */
	opacity: .1,
	/* Couleur du voile */
	fillColor: "#f00",
	/* Couleur et épaisseur du pourtour de la zone sélectionnée */
	border: "1px solid green"
};
/* Options bouton */
var optionsBouton = {
	/* Activation du bouton "Retour" */
	backButtonEnabled: true,
	/* Chemin vers l'image du bouton "Retour" */
	backButtonHTML: "<img src='http://www.touraineverte.com/aide-documentation-exemple-tutoriel-didacticiel/images/51/zoom-button-return.gif' title='Cliquez ici afficher la carte précédente' alt='Bouton Retour' />",
	/* Chemin vers l'image du bouton à l'état désactivé */
	buttonHTML: "<img src='http://www.touraineverte.com/aide-documentation-exemple-tutoriel-didacticiel/images/51/zoom-button.gif' title='Cliquez ici pour activer le Dragzoom' alt='Bouton Dragzoom' />",
	/* Chemin vers l'image du bouton à l'état activé */
	buttonZoomingHTML: "<img src='http://www.touraineverte.com/aide-documentation-exemple-tutoriel-didacticiel/images/51/zoom-button-activated.gif' title='Sélectionnez avec votre souris la zone à zoomer' alt='Dragzoom activé' />",
	/* Dimensions du bouton */
	buttonStartingStyle: {width: '24px', height: '24px'},
	/* Durée, en millisecondes, de persistance du rectangle, une fois la sélection faite */
	overlayRemoveTime: 2000,
	/* Désactivation de la possibilité d'executer des zooms successifs */
	stickyZoomEnabled: false,
	/* Activation du click droit sur la souris permettant un zoom arrière sur la carte */
	rightMouseZoomOutEnabled: true,
	/* Taille minimale, en pixels, de la zone de sélection nécessaire pour autoriser le déclenchement du zoom sur la carte */
	minDragSize: 20
};
/* Callback */
var detectionEvenementDragZoom = {
	/* En cas de click sur le bouton : */
	buttonclick: function(){document.getElementById("actionEnCours").innerHTML += "<br /><em>Vous venez de cliquer sur le bouton DragZoom</em>"},
	/* Au début de l'agrandissement : */
	dragstart: function(){document.getElementById("actionEnCours").innerHTML += "<br /><em>Début de la sélection de la zone à zoomer . . .</em>"},
	/* En cours d'agrandissement : */
	dragging: function(x1,y1,x2,y2){document.getElementById("actionEnCours").innerHTML += "<br /><em>Coordonnées du point initial</em> : x1="+x1+",y1="+y1+" - <em>Coordonnées du curseur</em> : x2="+x2+",y2="+y2},
	/* A la fin de l'agrandissement : */
	dragend: function(nw,ne,se,sw,nwpx,nepx,sepx,swpx){document.getElementById("actionEnCours").innerHTML += "<br /><em>Zone à zoomer</em> : NE="+ne+";SW="+sw}
};	  
/* Ajout du bouton dragzoom à la carte nommée "maCarte" */
/* Personnalisé à l'aide de optionsStyleVoile, optionsBouton, detectionEvenementDragZoom */
/* Et s'affichant dans le coin supérieur droit de la carte avec une marge de 10 pixels par rapport au bord de la carte */
maCarte.addControl(new DragZoomControl(optionsStyleVoile, optionsBouton, detectionEvenementDragZoom), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(100,8)));
/* Si le navigateur n'est pas compatible avec l'API de Google Maps ... */
}else{
/* ... affichage du message "Désolé, mais votre navigateur n'est pas compatible avec Google Maps". */
	alert("Désolé, mais votre navigateur n\'est pas compatible avec Google Maps");
}
}
</script>
</head>
 
<!-- Une fois la page chargée la fonction initialize() est exécutée. -->
<!-- A la fermeture de la page , la fonction GUnload() est exécutée. -->
<body onload="initialize()" onunload="GUnload()">
<!-- La carte nommée "maCarte", va venir s'afficher à l' intérieur de -->
<!-- la balise <div> ayant pour identifiant id="EmplacementDeMaCarte". -->
<!-- Elle fera donc 100% de large et 400 pixels de haut. -->
	<div id="EmplacementDeMaCarte" style="width:100%;height:400px"></div>
<!-- C'est dans le balise <div> ayant pour identifiant id="actionEnCours" -->
<!-- que vont venir s'afficher  tous  les  événements  liés  au  DragZoom -->
	<div id="actionEnCours"><em>Aucune action actuellement sur le dragzoom</em></div>
<!-- Si JavaScript n'est pas activé sur votre navigateur, le message d'alerte situé entre les balises <noscript></noscript> s'affichera -->
	<noscript>
		<div id="noscript">
		<p>Attention :</p>
		<p>Afin de pouvoir utiliser les API de Google, JavaScript doit être activé.</p>
		<p>Or il semble que JavaScript est désactivé ou qu'il n'est pas supporté par votre navigateur.</p>
		<p>Pour afficher Google Maps, activez JavaScript en modifiant les options de votre navigateur, puis essayez à nouveau.</p>
		</div>
	</noscript>
	</body>
</html>
 

Remarque(s)

La ligne Repère N° 1 vous permet de charger le script dragzoom.js nécessaire au fonctionnement du bouton "dragzoom".

Deux solutions s'offrent à vous :

Primo :

  • Soit vous utilisez le chemin vers le script hébergé sur les serveurs de google, et vous ne changez pas la ligne Repère N° 1 :
<script src="http://gmaps-utility-library.googlecode.com/svn/trunk/dragzoom/1.3/src/dragzoom.js" type="text/javascript"></script>

Secundo :

  • Soit vous téléchargez le script dragzoom.js puis vous l'installez sur votre serveur, et vous modifiez la ligne Repère N° 1 comme suit :
<script src="http://www.votreserveur.fr/votrechemin/dragzoom.js" type="text/javascript"></script>

Personnalisation du voile et de la zone de sélection :

  • Repère N° 2 : les différentes options sont rassemblées dans optionsStyleVoile
  • Repère N° 3 : Opacité du voile recouvrant la carte : opacity : .1 - valeur de 0 à 1
  • Repère N° 4 : Couleur du voile recouvrant la carte : fillColor : "#f00" - rouge
  • Repère N° 5 : Caractéristiques de la zone sélectionnée : border : "1px solid green" - épaisseur : 1px - type : solid - couleur : green (vert)

 

Personnalisation du bouton :

  • Repère N° 6 : les différentes options sont rassemblées dans optionsBouton
  • Repère N° 7 : Activation du bouton Retour, permettant, grâce à un simple click, d'afficher la carte dans l'état dans lequel elle se trouvait avant le zoom : backButtonEnabled : true
  • Repère N° 8 : Chemin/nom de l'image du bouton "Retour" : backButtonHTML
  • Repère N° 9 : Chemin/nom de l'image du bouton "DragZoom" à l'état désactivé : buttonHTML
  • Repère N° 10 : Chemin/nom de l'image du bouton "DragZoom" à l'état activé : buttonZoomingHTML
  • Repère N° 11 : Dimensions du bouton "DragZoom" en pixels : buttonStartingStyle : {width: '24px', height: '24px'}
  • Repère N° 12 : Durée, en millisecondes, de persistance du rectangle de sélection une fois la sélection et le zoom terminé : overlayRemoveTime : 2000
  • Repère N° 13 : L'utilisateur doit systématiquement cliquer sur le bouton "DragZoom" pour effectuer un zoom : stickyZoomEnabled : false
  • Repère N° 14 : Activation du click droit sur la souris permettant un zoom arrière sur la carte : rightMouseZoomOutEnabled : true
  • Repère N° 15 : Taille minimale, en pixels, de la zone sélectionnée nécessaire au déclenchement du zoom : minDragSize : 20

 

Callback :

  • Repère N° 16 : les différentes options sont rassemblées dans detectionEvenementDragZoom
  • Repère N° 17 : buttonclick: function(){ ... }
  • Repère N° 18 : dragstart: function(){ ... }
  • Repère N° 19 : dragging: function(x1,y1,x2,y2){ ... }
  • Repère N° 20 : dragend: function(nw,ne,se,sw,nwpx,nepx,sepx,swpx){ ... }

 

La ligne Repère N° 21 vous permet d'insérer le bouton "dragzoom" dans la carte nommée "maCarte, en lui appliquant les différentes options indiquées entre parenthèses :

  • optionsStyleVoile,
  • optionsBouton,
  • detectionEvenementDragZoom,
  • Modification de l'emplacement du contrôle à l'aide de : new GControlPosition() :
    • G_ANCHOR_TOP_RIGHT : bouton positionné en haut à droite
    • new GSize(10,10) : créé une marge de 10 pixels par rapport aux bords de la carte.

 

API Google Maps - API Google Earth - Fichiers KML KMZ - Aide Didacticiel Documentation Exemple Tutoriels Trucs et Astuces en Français sur TouraineVerte.com
Formation et tutoriels sur les cartes API Google Maps | Formation et tutoriels sur les cartes API Google Earth | Formation et tutoriels sur les Fichiers KML KMZ
Développeur freelance auto-entrepreneur carte Google Maps Earth API | http://www.TouraineVerte.com | © 2010 - Plan du site | fadamaps37@touraineverte.com