Voici une solution intéressante qui utilise l'API Gooogle Maps elle-même. Pas de service externe, pas de bibliothèque supplémentaire. Et elle permet d'utiliser des formes personnalisées et de multiples couleurs et styles. La solution utilise des marqueurs vectoriels, que l'api googlemaps appelle Symboles .
Outre les quelques symboles prédéfinis et limités, vous pouvez créer n'importe quelle forme de n'importe quelle couleur en spécifiant une chaîne de chemin SVG ( Spec ).
Pour l'utiliser, au lieu de définir l'option du marqueur 'icon' sur l'url de l'image, vous la définissez sur un dictionnaire contenant les options du symbole. A titre d'exemple, j'ai réussi à créer un symbole qui est assez similaire au marqueur standard :
function pinSymbol(color) {
return {
path: 'M 0,0 C -2,-20 -10,-22 -10,-30 A 10,10 0 1,1 10,-30 C 10,-22 2,-20 0,0 z M -2,-30 a 2,2 0 1,1 4,0 2,2 0 1,1 -4,0',
fillColor: color,
fillOpacity: 1,
strokeColor: '#000',
strokeWeight: 2,
scale: 1,
};
}
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(latitude, longitude),
icon: pinSymbol("#FFF"),
});
Si vous prenez soin de maintenir le point clé de la forme à 0,0, vous évitez de devoir définir les paramètres de centrage de l'icône du marqueur. Un autre exemple de chemin, le même marqueur sans le point :
path: 'M 0,0 C -2,-20 -10,-22 -10,-30 A 10,10 0 1,1 10,-30 C 10,-22 2,-20 0,0 z',
Et voilà un drapeau de couleur très simple et très laid :
path: 'M 0,0 -1,-2 V -43 H 1 V -2 z M 1,-40 H 30 V -20 H 1 z',
Vous pouvez également créer les chemins à l'aide d'un outil visuel tel que Inkscape (GNU-GPL, multiplateforme). Quelques conseils utiles :
- Google API n'accepte qu'un seul chemin, vous devez donc transformer n'importe quel autre objet (carré, cercle...) en chemin et les joindre en un seul. Les deux commandes se trouvent dans le menu Chemin.
- Pour déplacer le chemin vers le point (0,0), passez en mode d'édition du chemin (F2), sélectionnez tous les nœuds de contrôle et faites-les glisser. les nœuds de contrôle et faites-les glisser. Déplacer l'objet avec F1, ne changera pas les coordonnées des nœuds du chemin.
- Pour vous assurer que le point de référence est bien à (0,0), vous pouvez le sélectionner seul et éditer les coordonnées à la main dans la barre d'outils supérieure.
- Après avoir enregistré le fichier SVG, qui est un XML, ouvrez-le avec un éditeur, recherchez l'élément svg:path et copiez le contenu de l'attribut 'd'.