Maintenant que l'on sait comment afficher une carte, il se peut que l'on ait besoin de disposer des éléments sur elle, pour, par exemple, indiquer un certain emplacement ou encore définir une zone géographique. Ceci peut se faire à l'aide des
overlays.
Les
overlays sont des éléments graphiques que l'ont peut poser ou dessiner sur une carte Google Maps.
Les
overlays auxquels on s'intéresse ici sont les suivants :
- les marqueurs qui permettent d'indiquer un point sur la carte à la manière d'un drapeau
- les polylines qui permettent, par exemple, de faire des tracés de vols d'avion
- les polygones qui permettent de dessiner sur la carte une zone géographique
Les marqueurs
Les marqueurs permettent de situer un point précis sur une carte.
Pour créer
et afficher un marqueur, il faut au minimum spécifier une position (en latitude et longitude avec le constructeur
google.maps.LatLng()
vu dans la partie précédente "Affichage d'une carte Google Maps") et la carte sur laquelle le marqueur doit être affiché.
Code : JavaScript 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | function initialiser() {
var latlng = new google.maps.LatLng(46.779231, 6.659431);
var options = {
center: latlng,
zoom: 19,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var carte = new google.maps.Map(document.getElementById("carte"), options);
/****************Nouveau code****************/
//création du marqueur
var marqueur = new google.maps.Marker({
position: new google.maps.LatLng(46.779231, 6.659431),
map: carte
});
/********************************************/
}
|
Utilisez le squelette HTML vu dans la partie précédente "Affichage d'une carte Google Maps" et remplacez le code de la fonction Javascript initialiser()
qui s'y trouve par le code ci-dessus. Faites de même pour tous les prochains exemples.
Ceci affiche un marqueur rouge sur le bâtiment "Ecole d'ingénieurs du Canton de Vaud" que l'on voit sur la carte.
Il est possible de rendre le marqueur
draggable (c'est-à-dire permettre qu'on puisse le déplacer au moyen de la souris par un glisser-déposer). Pour ce faire, on peut soit, lors de la création du marqueur, spécifier dans les options
draggable: true
(entre les accolades dans les paramètres du constructeur, ici
new google.maps.Marker({...})
), soit, après avoir créé le marqueur
marqueur
, faire un
setDraggable(true)
.
De la même manière, on peut aussi modifier l'image du marqueur par la propriété
icon: "./mon_image.png"
ou la fonction
setIcon("./mon_image.png")
.
Les polylines
Les
polylines permettent de dessiner des lignes droites attachées les unes aux autres sur la carte. Ceci peut permettre, par exemple, de dessiner un itinéraire sur la carte Google Maps.
Pour créer et dessiner un
polyline, il est nécessaire de définir son chemin, c'est-à-dire les coordonnées par lesquelles il passe. Pour ce faire, il faut créer un tableau dont les éléments sont des instances de la classe
google.maps.LatLng()
.
Voici le tableau du parcours du bus que les étudiants de la Heig-VD doivent prendre tous les matins depuis la gare pour aller à l'école :
Code : JavaScript 1
2
3
4
5
6
7
8
9
10
11
12 | //chemin du tracé du futur polyline
var parcoursBus = [
new google.maps.LatLng(46.781367900048, 6.6401992834884),
new google.maps.LatLng(46.780821285011, 6.6416348016222),
new google.maps.LatLng(46.780496546047, 6.6421830461926),
new google.maps.LatLng(46.779835306991, 6.6426765713417),
new google.maps.LatLng(46.777748677169, 6.6518819126808),
new google.maps.LatLng(46.778027878803, 6.6541349682533),
new google.maps.LatLng(46.778484884759, 6.6557324922045),
new google.maps.LatLng(46.778752327087, 6.6573654211838),
new google.maps.LatLng(46.778605381016, 6.6588674582321)
];
|
Lorsque ceci est fait, il faut créer le
polyline en spécifiant pour la propriété
path
le tableau déclaré ci-dessus.
Code : JavaScript | var traceParcoursBus = new google.maps.Polyline({
path: parcoursBus,//chemin du tracé
strokeColor: "#FF0000",//couleur du tracé
strokeOpacity: 1.0,//opacité du tracé
strokeWeight: 2//grosseur du tracé
});
|
Enfin, afin d'afficher le tracé sur la carte, il faut utiliser la méthode
setMap()
de notre objet
traceParcoursBus
.
Code : JavaScript | //lier le tracé à la carte
//ceci permet au tracé d'être affiché sur la carte
traceParcoursBus.setMap(carte);
|
Au lieu de faire un setMap()
, on aurait pu, lors de la création du polyline, spécifier la propriété map
dans les paramètres du constructeur new google.maps.Polyline({...})
.
Quand on ajoute une propriété dans les paramètres du constructeur, il ne faut pas oublier de vérifier que seule la dernière définition de propriété ne se termine pas par une virgule et qu'à la fin de toutes les autres une virgule est présente.
Voici ce que le code de notre fonction
initialiser()
donne au final :
Code : JavaScript 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 | function initialiser() {
var latlng = new google.maps.LatLng(46.779231, 6.659431);
var options = {
center: latlng,
zoom: 19,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var carte = new google.maps.Map(document.getElementById("carte"), options);
/****************Nouveau code****************/
//redéfinition du centre de la carte
carte.setCenter(new google.maps.LatLng(46.779872043155, 6.6497500934796));
//redéfinition du zoom
carte.setZoom(15);
//chemin du tracé
var parcoursBus = [
new google.maps.LatLng(46.781367900048, 6.6401992834884),
new google.maps.LatLng(46.780821285011, 6.6416348016222),
new google.maps.LatLng(46.780496546047, 6.6421830461926),
new google.maps.LatLng(46.779835306991, 6.6426765713417),
new google.maps.LatLng(46.777748677169, 6.6518819126808),
new google.maps.LatLng(46.778027878803, 6.6541349682533),
new google.maps.LatLng(46.778484884759, 6.6557324922045),
new google.maps.LatLng(46.778752327087, 6.6573654211838),
new google.maps.LatLng(46.778605381016, 6.6588674582321)
];
var traceParcoursBus = new google.maps.Polyline({
path: parcoursBus,//chemin du tracé
strokeColor: "#FF0000",//couleur du tracé
strokeOpacity: 1.0,//opacité du tracé
strokeWeight: 2//grosseur du tracé
});
//lier le tracé à la carte
//ceci permet au tracé d'être affiché sur la carte
traceParcoursBus.setMap(carte);
/********************************************/
}
|
Vous pouvez voir que j'ai ajouté sous le commentaire "Nouveau code" deux autres instructions. J'aurais pu mettre tout ceci dans les options de la carte, mais j'ai préféré faire de cette manière pour bien faire la différence entre le code original de notre fonction initialiser()
et tout ce que nous venons d'ajouter.
Les polygones
Sur une carte Google Maps, on peut aussi dessiner des polygones. Un exemple d'utilité pratique serait de définir par ce biais un secteur ou une zone.
Créer un polygone sur la carte est extrêmement similaire à la création d'un
polyline que l'on vient de voir. Un peu comme avant, il faut :
- Créer un tableau contenant tous les sommets du polygone
- Créer le polygone avec le constructeur google.maps.Polygon()
- Afficher le polygone sur la carte
Voici ce que donne le code :
Code : JavaScript 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 | function initialiser() {
var latlng = new google.maps.LatLng(46.779231, 6.659431);
var options = {
center: latlng,
zoom: 19,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var carte = new google.maps.Map(document.getElementById("carte"), options);
/****************Nouveau code****************/
//redéfinition du zoom
carte.setZoom(18);
//sommets du polygone
var parcelleHeig = [
new google.maps.LatLng(46.779733557514, 6.660767535),
new google.maps.LatLng(46.780189079483, 6.6595337188532),
new google.maps.LatLng(46.779114923142, 6.6580590403695),
new google.maps.LatLng(46.778462483896, 6.6592118537714)
];
polygoneParcelleHeig = new google.maps.Polygon({
paths: parcelleHeig,//sommets du polygone
strokeColor: "#0FF000",//couleur des bords du polygone
strokeOpacity: 0.8,//opacité des bords du polygone
strokeWeight: 2,//épaisseur des bords du polygone
fillColor: "#0FF000",//couleur de remplissage du polygone
fillOpacity: 0.35////opacité de remplissage du polygone
});
//lier le polygone à la carte
//ceci permet au polygone d'être affiché sur la carte
polygoneParcelleHeig.setMap(carte);
/********************************************/
}
|
Notez qu'il n'est pas nécessaire lors de la définition des sommets de la parcelle de définir le dernier sommet sur le premier afin de fermer le polygone ; le dernier sommet sera automatiquement relié au premier.