Afficher les latitude et longitude dans le titre du marqueur déplaçable
Ce tutoriel vous explique comment afficher les coordonnées d'un marqueur mobile lorsque celui-ci est survolé par le curseur de votre souris.
Reprenons le code du tutoriel, intitulé Comment créer et afficher un marqueur déplaçable ?.
On ajoute aux options du marqueur optionsMarqueur
la propriété title
qui affichera, par défaut, les coordonnées (Latitude, Longitude) du centre de la carte :
var optionsMarqueur = {
map: maCarte,
position: new google.maps.LatLng( 47.389982, 0.688877 ),
title: "Lat : "+maCarte.getCenter().lat+" - Lng"+maCarte.getCenter().lng,
draggable: true
};
var marqueur = new google.maps.Marker( optionsMarqueur );
Pour afficher les nouvelles coordonnées du marqueur à la fin de son déplacement sous son emplacement, il faut créer un nouvel observateur d'événement sur le marker nommé marqueur
, chargé d'observer l'événement dragend
L'événement dragend
sera déclenché lorsque vous cesserez de déplacer le marqueur mobile.
A cet instant précis, un objet evenement
, contenant diverses informations dont le nouvel emplacement du marqueur, est transmis à la fonction chargée du traitement :
google.maps.event.addListener( marqueur, "dragend"; function( evenement ) {
...
});
Enfin, la fonction chargée du traitement de l'événement dragend
va :
- extraire les nouvelles coordonnées du marqueur :
var lat = evenement.latLng.lat(), lng = evenement.latLng.lng();
- puis les afficher dans le titre du marqueur :
this.setTitle( "Lat : "+maCarte.getCenter().lat()+" - Lng : "+maCarte.getCenter().lng() );
Au final on obtient donc le code suivant :
var optionsMarqueur = {
map: maCarte,
position: new google.maps.LatLng( 47.389982, 0.688877 ),
title: "Lat : "+maCarte.getCenter().lat()+" - Lng : "+maCarte.getCenter().lng(),
draggable: true
};
var marqueur = new google.maps.Marker( optionsMarqueur );
google.maps.event.addListener( marqueur, "dragend", function( evenement ) {
var lat = evenement.latLng.lat(),
lng = evenement.latLng.lng();
this.setTitle( "Lat : "+lat+" - Lng"+lng );
});
Carte : afficher les latitude et longitude dans le titre du marqueur déplaçable
Code : afficher les latitude et longitude dans le titre du marqueur déplaçable
<!DOCTYPE html>
<html lang="fr">
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta charset="UTF-8" />
<title>Titre de votre page</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0
}
#EmplacementDeMaCarte {
height: 100%
}
</style>
</head>
<body>
<div id="EmplacementDeMaCarte"></div>
<noscript>
<p>Attention : </p>
<p>Afin de pouvoir utiliser Google Maps, JavaScript doit être activé.</p>
<p>Or, il semble que JavaScript est désactivé ou qu'il ne soit pas supporté par votre navigateur.</p>
<p>Pour afficher Google Maps, activez JavaScript en modifiant les options de votre navigateur, puis essayez à nouveau.</p>
</noscript>
<script>
function initialisation() {
var optionsCarte = {
zoom: 8,
center: { lat: 47.389982, lng: 0.688877 }
};
var maCarte = new google.maps.Map( document.getElementById("EmplacementDeMaCarte"), optionsCarte );
var optionsMarqueur = {
map: maCarte,
position: maCarte.getCenter(),
title: "Lat : "+maCarte.getCenter().lat()+" - Lng"+maCarte.getCenter().lng(),
draggable: true
};
var marqueur = new google.maps.Marker( optionsMarqueur );
google.maps.event.addListener( marqueur, "dragend", function( evenement ) {
var lat = evenement.latLng.lat(),
lng = evenement.latLng.lng();
this.setTitle( "Lat : "+lat+" - Lng"+lng );
});
}
</script>
<script async defer src="http://maps.googleapis.com/maps/api/js?key=InsérezVotreCleAPIGoogleMapsIci&callback=initialisation"></script>
</body>
</html>
Afficher les latitude et longitude d'un marqueur déplaçable en utilisant dragend
Pour afficher les coordonnées d'un marqueur à la fin de son déplacement, il faut créer un nouvel observateur d'événement sur le marker nommémarqueur
, chargé d'observer l'événement dragend
L'événement dragend
sera déclenché lorsque vous cesserez de déplacer le marqueur mobile.
A cet instant précis, un objet evenement
, contenant diverses informations dont le nouvel emplacement du marqueur, est transmis à la fonction chargée du traitement :
google.maps.event.addListener( marqueur, "dragend"; function( evenement ) {
...
});
Enfin, la fonction chargée du traitement de l'événement dragend
va :
- extraire les nouvelles coordonnées du marqueur :
var lat = evenement.latLng.lat(), lng = evenement.latLng.lng();
- puis les afficher dans des balises
<span/>
ayant pour identifiantid="positionMarkerLatitude"
etid="positionMarkerLongitude"
:document.getElementById( "positionMarkerLatitude" ).innerHTML = lat; document.getElementById( "positionMarkerLongitude" ).innerHTML = lng;
Au final on obtient donc le code suivant :
var optionsMarqueur = {
map: maCarte,
position: new google.maps.LatLng( 47.389982, 0.688877 ),
draggable: true
};
var marqueur = new google.maps.Marker( optionsMarqueur );
google.maps.event.addListener( marqueur, "dragend", function( evenement ) {
var lat = evenement.latLng.lat(),
lng = evenement.latLng.lng();
document.getElementById( "positionMarkerLatitude" ).innerHTML = lat;
document.getElementById( "positionMarkerLongitude" ).innerHTML = lng;
});
Carte : afficher les latitude, longitude d'un marqueur déplaçable en utilisant dragend
Longitude :
Code : afficher les latitude, longitude d'un marqueur déplaçable en utilisant dragend
<!DOCTYPE html>
<html lang="fr">
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta charset="UTF-8" />
<title>Titre de votre page</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0
}
#EmplacementDeMaCarte {
height: 90%
}
#positionMarker {
height: 10%
}
</style>
</head>
<body>
<div id="EmplacementDeMaCarte"></div>
<div id="positionMarker">Latitude <span id="positionMarkerLatitude"></span> - Longitude <span id="positionMarkerLongitude"></span></div>
<noscript>
<p>Attention : </p>
<p>Afin de pouvoir utiliser Google Maps, JavaScript doit être activé.</p>
<p>Or, il semble que JavaScript est désactivé ou qu'il ne soit pas supporté par votre navigateur.</p>
<p>Pour afficher Google Maps, activez JavaScript en modifiant les options de votre navigateur, puis essayez à nouveau.</p>
</noscript>
<script>
function initialisation() {
var optionsCarte = {
zoom: 8,
center: { lat: 47.389982, lng: 0.688877 }
};
var maCarte = new google.maps.Map( document.getElementById("EmplacementDeMaCarte"), optionsCarte );
var optionsMarqueur = {
map: maCarte,
position: maCarte.getCenter(),
draggable: true
};
var marqueur = new google.maps.Marker( optionsMarqueur );
google.maps.event.addListener( marqueur, "dragend", function( evenement ) {
var lat = evenement.latLng.lat(),
lng = evenement.latLng.lng();
document.getElementById( "positionMarkerLatitude" ).innerHTML = lat;
document.getElementById( "positionMarkerLongitude" ).innerHTML = lng;
});
}
</script>
<script async defer src="http://maps.googleapis.com/maps/api/js?key=InsérezVotreCleAPIGoogleMapsIci&callback=initialisation"></script>
</body>
</html>
Afficher les latitude et longitude d'un marqueur déplaçable en utilisant position_changed
La classe Marker
héritant de la classe MVCObject
, une autre solution consiste à observer les notifications de changement d'état caractéristiques des objets MVCObject
.
Ainsi, l'API va déclencher un événement position_changed
sur le marqueur chaque fois que celui-ci voit changer sa position et donc sa propriété position
.
Il suffit donc de créer un nouvel observateur d'événement sur le marqueur nommé marqueur
, chargé d'observer l'événement position_changed
:
google.maps.event.addListener( marqueur, "position_changed", function() {
...
});
Et lorsque l'événement position_changed
est détecté sur le marqueur :
on récupère l'objet LatLng
du marqueur avec la méthode getPosition ensuite, avec les méthodes lat()
et lng
, on extrait ses latitude et longitude :
var lat = this.getPosition.lat(),
lng = this.getPosition.lng();
Au final on obtient donc le code suivant :
var optionsMarqueur = {
map: maCarte,
position: new google.maps.LatLng( 47.389982, 0.688877 )
draggable: true
};
var marqueur = new google.maps.Marker( optionsMarqueur );
google.maps.event.addListener( marqueur, "position_changed" function() {
var lat = this.getPosition().lat(),
lng = this.getPosition().lng();
document.getElementById( "positionMarkerLatitude" ).innerHTML = lat;
document.getElementById( "positionMarkerLongitude" ).innerHTML = lng;
});
Autre écriture possible la classe Marker
héritant de la classe MVCObject
:
var optionsMarqueur = {
map: maCarte,
position: new google.maps.LatLng( 47.389982, 0.688877 ),
draggable: true
};
var marqueur = new google.maps.Marker( optionsMarqueur );
google.maps.event.addListener( marqueur, "position_changed", function() {
var lat = this.get("position").lat(),
lng = this.get("position").lng();
document.getElementById( "positionMarkerLatitude" ).innerHTML = lat;
document.getElementById( "positionMarkerLongitude" ).innerHTML = lng;
});
Carte : afficher les latitude, longitude d'un marqueur déplaçable en utilisant position_changed
Longitude :
Code : afficher les latitude, longitude d'un marqueur déplaçable en utilisant position_changed
<!DOCTYPE html>
<html lang="fr">
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta charset="UTF-8" />
<title>Titre de votre page</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0
}
#EmplacementDeMaCarte {
height: 90%
}
#positionMarker {
height: 10%
}
</style>
</head>
<body>
<div id="EmplacementDeMaCarte"></div>
<div id="positionMarker">Latitude <span id="positionMarkerLatitude"></span> - Longitude <span id="positionMarkerLongitude"></span></div>
<noscript>
<p>Attention : </p>
<p>Afin de pouvoir utiliser Google Maps, JavaScript doit être activé.</p>
<p>Or, il semble que JavaScript est désactivé ou qu'il ne soit pas supporté par votre navigateur.</p>
<p>Pour afficher Google Maps, activez JavaScript en modifiant les options de votre navigateur, puis essayez à nouveau.</p>
</noscript>
<script>
function initialisation() {
var optionsCarte = {
zoom: 8,
center: { lat: 47.389982, lng: 0.688877 }
};
var maCarte = new google.maps.Map( document.getElementById("EmplacementDeMaCarte"), optionsCarte );
var optionsMarqueur = {
map: maCarte,
position: maCarte.getCenter(),
draggable: true
};
var marqueur = new google.maps.Marker( optionsMarqueur );
google.maps.event.addListener( marqueur, "position_changed", function() {
var lat = this.getPosition().lat(),
lng = this.getPosition().lng();
document.getElementById( "positionMarkerLatitude" ).innerHTML = lat;
document.getElementById( "positionMarkerLongitude" ).innerHTML = lng;
});
}
</script>
<script async defer src="http://maps.googleapis.com/maps/api/js?key=InsérezVotreCleAPIGoogleMapsIci&callback=initialisation"></script>
</body>
</html>
Qu'elles sont les différences entre dragend et position_changed
Si le résultat apparent de ces deux codes est identique, il existe une énorme différence au niveau des événements eux même et de leur gestion.
dragend
dragend
est un événement utilisateur : un objet evenement
, contenant diverses informations, est transmis à la fonction chargée du traitement.
La mise à jour de la propriété title
n'intervient qu'une fois le déplacement du marqueur terminé.
position_changed
position_changed
est un changement d'état MVC : aucun objet evenement
n'est transmis à la fonction chargée du traitement.
Pour analyser la propriété ayant changé, il faut appeler la méthode get
NomPropriete() ou pour un objet MVC get
( "NomPropriete").
La mise à jour de la propriété title
intervient tout au long du déplacement du marqueur.
Pour plus d'information sur les événements et leur gestion lisez : Gestion des événements event dans l'API Google Maps JavaScript V3.