179 votes

Comment puis-je modifier la couleur d'un marqueur Google Maps ?

J'utilise l'API Google Maps pour créer une carte remplie de marqueurs, mais je veux qu'un marqueur se distingue des autres. La chose la plus simple à faire, je pense, serait de changer la couleur du marqueur en bleu, au lieu de rouge. Est-ce facile à faire ou dois-je créer une nouvelle icône ? Si je dois créer une nouvelle icône, quel est le moyen le plus simple de le faire ?

2 votes

Vous pouvez consulter ce post d'hier : stackoverflow.com/questions/2467720/

0 votes

Ou peut-être un meilleur poste stackoverflow.com/questions/7095574/

128voto

Sean McMains Points 9311

Avec la version 3 de l'API Google Maps, le moyen le plus simple d'y parvenir est peut-être de récupérer un jeu d'icônes personnalisé, comme celui que Benjamin Keen a créé ici :

http://www.benjaminkeen.com/?p=105

Si vous placez toutes ces icônes au même endroit que votre page de carte, vous pouvez coloriser un marqueur en utilisant simplement l'option d'icône appropriée lors de sa création :

var beachMarker = new google.maps.Marker({
  position: myLatLng,
  map: map,
  icon: 'brown_markerA.png'
});

C'est très facile, et c'est l'approche que j'utilise pour le projet sur lequel je travaille actuellement.

6 votes

Cette réponse est géniale. J'étais triste que la réponse acceptée soit pour le V2, mais heureusement, le fait de faire défiler les réponses a porté ses fruits. Merci !

0 votes

J'ai créé une version qui ne repose pas sur les images : stackoverflow.com/a/23163930/1689770

52voto

Jonathan Leaders Points 317

Vous n'avez pas besoin de bibliothèques personnalisées pour Google Maps v3.

var pinColor = "FE7569";
var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + pinColor,
    new google.maps.Size(21, 34),
    new google.maps.Point(0,0),
    new google.maps.Point(10, 34));
var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
    new google.maps.Size(40, 37),
    new google.maps.Point(0, 0),
    new google.maps.Point(12, 35));
var marker = new google.maps.Marker({
            position: new google.maps.LatLng(0,0), 
            map: map,
            icon: pinImage,
            shadow: pinShadow
        });

de Matt Burns Cette méthode fonctionne depuis octobre 2014, mais elle est obsolète.

2 votes

Cette fonctionnalité a malheureusement été abandonnée. comme vous pouvez le voir ici . C'est une situation tellement décevante, où cette version est dépréciée et la version précédente que j'utilisais, MapIconMaker a déjà été déprécié.

0 votes

Notez que cela ne fonctionne pas avec https, seulement http. C'est dommage !

0 votes

@JoeGalind y a-t-il une raison pour laquelle le cryptage est nécessaire lors de la récupération des couleurs ? Je veux dire, je ne vois aucun risque de sécurité à utiliser http à moins qu'il n'expose quelque chose dont je ne suis pas au courant dans l'en-tête.

49voto

Bob Points 4773

MapIconMaker : une bibliothèque pour Google Maps v2

Une façon de procéder est d'utiliser le MapIconMaker . Il y a un exemple ici . Les icônes par défaut de Google Maps ont une largeur de 20px et une hauteur de 34px, vous pouvez donc utiliser quelque chose comme ceci pour les émuler :

var newIcon = MapIconMaker.createMarkerIcon({width: 20, height: 34, primaryColor: "#0000FF", cornercolor:"#0000FF"});
var marker = new GMarker(map.getCenter(), {icon: newIcon});

Vous pouvez même l'envelopper dans une fonction pour vous faciliter la tâche :

function getIcon(color) {
    return MapIconMaker.createMarkerIcon({width: 20, height: 34, primaryColor: color, cornercolor:color});
}

C'est ce que j'utilise personnellement pour tous les marqueurs que je crée. Je préfère avoir la possibilité de changer de couleur sur un coup de tête.

Mise à jour : La couleur hexagonale de l'icône par défaut est "#FE7569". Vous pouvez également définir une image sur un marqueur plutôt que de créer un nouveau marqueur avec une nouvelle icône. Donc, si vous voulez une fonction pour mettre en évidence, vous pouvez aller avec quelque chose comme ceci, en utilisant la fonction ci-dessus :

function highlightMarker(marker, highlight) {
    var color = "#FE7569";
    if (highlight) {
        color = "#0000FF";
    }
    marker.setImage(getIcon(color).image);
}

StyledMarker : une bibliothèque pour Google Maps v3

Comme la V2 a été remplacée par la V3 il y a quelque temps, j'ai pensé que je devais mettre à jour cette réponse. J'ai créé une bibliothèque pour les marqueurs personnalisés qui se trouve dans la bibliothèque d'utilitaires de V3. ici . Il permet d'utiliser différentes couleurs et formes, et vous pouvez également placer du texte sur le marqueur. Il fonctionne en utilisant l'API Google Charts qui dispose de méthodes pour créer des marqueurs de type Google Maps. N'hésitez pas à consulter le code source si vous préférez utiliser directement l'API Google Charts.

L'avantage de cette bibliothèque, cependant, est qu'elle se charge de définir les régions cliquables de ces images de marqueurs pour vous, de sorte que, par exemple, la bulle plus longue avec du texte aura les régions cliquables auxquelles on s'attend, comme suit cet exemple .

3 votes

Il semble que cela ne soit compatible qu'avec GMaps API v2 ?

7 votes

@Tigraine J'ai en fait créé une toute nouvelle bibliothèque à utiliser pour la v3 appelée "StyledMarker" qui se trouve dans la bibliothèque d'utilitaires de la v3 : code.google.com/p/google-maps-utility-library-v3/wiki/Libraries

0 votes

Regardez la réponse de Sean McMains pour la v3.

47voto

Kevin Points 8488

Les cartes v2 étant obsolètes, vous êtes probablement intéressé par les cartes v3 : https://developers.google.com/maps/documentation/javascript/markers#simple_icons

Pour les cartes v2 :

http://code.google.com/apis/maps/documentation/overlays.html#Icons_overview

Vous auriez un jeu de logique pour toutes les broches "normales", et un autre pour les broches "spéciales" utilisant le nouveau marqueur défini.

26 votes

Note aux futurs lecteurs : Ceci est pour Google Maps API v2 qui est déprécié. Si vous utilisez la version 3, vous devez chercher ailleurs.

14 votes

J'ai cliqué sur le premier lien, ctrl-f pour 'color' : aucun résultat. Ce serait bien d'ajouter plus de détails à la réponse pour répondre réellement à la question. L'OP demande spécifiquement s'il est possible de changer la couleur. sans créer une nouvelle icône.

24voto

matt burns Points 6072

Personnellement, je trouve que les icônes générées par l'API Google Charts sont superbes et faciles à personnaliser de manière dynamique.

Voir ma réponse sur Google Maps API 3 - Couleur de marqueur personnalisée pour le marqueur par défaut (point)

1 votes

Cette réponse est similaire à celle de @Jonathan, et le service est malheureusement maintenant déprécié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X