Puis-je utiliser mon image.svg convertie comme icône google map. J'étais en train de convertir mon image png en svg et je souhaite l'utiliser comme un symbole de carte google qui peut être pivoté. J'ai déjà essayé d'utiliser le symbole de google map mais je veux avoir une icône comme voiture, homme, etc ... C'est pourquoi j'ai converti mes quelques fichiers png en svg, tout comme cet exemple de site qu'est-ce qu'il utilise pour ces http: / /www.goprotravelling.com/
91
Réponses:
Vous pouvez rendre votre icône en utilisant la notation SVG Path .
Consultez la documentation Google pour plus d'informations.
Voici un exemple de base:
Voici un exemple de travail sur la façon d'afficher et de mettre à l'échelle une icône SVG de marqueur:
Démo JSFiddle
Éditer:
Un autre exemple ici avec une icône complexe:
Démo JSFiddle
Modifier 2:
Et voici comment vous pouvez avoir un fichier SVG comme icône:
Démo JSFiddle
la source
Si vous avez besoin d'un svg complet, pas seulement d'un chemin et que vous voulez qu'il soit modifiable côté client (par exemple, changer le texte, masquer les détails, ...), vous pouvez utiliser une autre 'URL' de données avec svg inclus:
JavaScript (Firefox) btoa () est utilisé pour obtenir l'encodage base64 à partir du texte SVG. Vous pouvez également utiliser http://dopiaza.org/tools/datauri/index.php pour générer des URL de données de base.
Voici un exemple complet de jsfiddle :
Des informations supplémentaires peuvent être trouvées ici .
Évitez l'encodage base64:
Afin d'éviter l'encodage base64, vous pouvez remplacer
'data:image/svg+xml;charset=UTF-8;base64,' + btoa(svg)
par'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg)
Cela devrait fonctionner avec les navigateurs modernes jusqu'à IE9. L'avantage est qu'il
encodeURIComponent
s'agit d'une fonction js par défaut et disponible dans tous les navigateurs modernes. Vous pouvez également obtenir des liens plus petits, mais vous devez le tester et envisager de l'utiliser à la'
place de"
votre svg.Voir également Optimiser les SVG dans les URI de données pour plus d'informations.
Support IE: Afin de prendre en charge les marqueurs SVG dans IE, il faut deux petites adaptations comme décrit ici: Les marqueurs SVG dans IE . J'ai mis à jour l'exemple de code pour prendre en charge IE.
la source
data:image/svg+xml;utf8,
. Plus d'informations: css-tricks.com/probably-dont-base64-svg#
avez-vous utilisé le codage d'URL?Je sais que ce post est un peu vieux, mais j'ai vu tellement de mauvaises informations à ce sujet à SO que je pourrais crier. Donc, je dois juste jeter mes deux cents avec une approche totalement différente qui, je sais, fonctionne, car je l'utilise de manière fiable sur de nombreuses cartes. En plus de cela, je pense que l'OP voulait également la possibilité de faire pivoter le marqueur de flèche autour du point de la carte, ce qui est différent de la rotation de l'icône autour de son propre axe x, y qui changera l'endroit où le marqueur de flèche pointe sur la carte.
Tout d'abord, rappelez-vous que nous jouons avec Google maps et SVG, nous devons donc nous adapter à la manière dont Google déploie son implémentation de SVG pour les marqueurs (ou en fait les symboles). Google fixe son ancre pour l'image du marqueur SVG à 0,0, qui N'EST PAS le coin supérieur gauche de la zone de visualisation SVG. Pour contourner cela, vous devez dessiner votre image SVG un peu différemment pour donner à Google ce qu'il veut ... oui la réponse est dans la façon dont vous créez réellement le chemin SVG dans votre éditeur SVG (Illustrator, Inkscape, etc. .).
La première étape consiste à se débarrasser de la viewBox. Cela peut être fait en définissant la viewBox dans votre XML sur 0 ... c'est vrai, juste un zéro au lieu des quatre arguments habituels pour la viewBox. Cela désactive la zone d'affichage (et oui, c'est sémantiquement correct). Vous remarquerez probablement que la taille de votre image saute immédiatement lorsque vous faites cela, et c'est parce que le svg n'a plus de base (la viewBox) pour redimensionner l'image. Nous créons donc cette référence directement, en définissant la largeur et la hauteur sur le nombre réel de pixels que vous souhaitez que votre image soit dans l'éditeur XML de votre éditeur SVG.
En définissant la largeur et la hauteur de l'image svg dans l'éditeur XML, vous créez une ligne de base pour la mise à l'échelle de l'image, et cette taille devient une valeur de 1 pour les propriétés d'échelle du marqueur par défaut. Vous pouvez voir l'avantage que cela présente pour la mise à l'échelle dynamique du marqueur.
Maintenant que votre image est dimensionnée, déplacez l'image jusqu'à ce que la partie de l'image que vous souhaitez avoir comme ancre se trouve au-dessus des coordonnées 0,0 de l'éditeur svg. Une fois que vous avez fait cela, copiez la valeur de l' attribut d du chemin svg. Vous remarquerez qu'environ la moitié des nombres sont négatifs, ce qui est le résultat de l'alignement de votre point d'ancrage pour le 0,0 de l'image au lieu de la viewBox.
L'utilisation de cette technique vous permettra ensuite de faire pivoter correctement le marqueur, autour du point lat et lng sur la carte. C'est le seul moyen fiable de lier le point du marqueur svg que vous souhaitez à la lat et à la longueur de l'emplacement du marqueur.
J'ai essayé de créer un JSFiddle pour cela , mais il y a un bogue dans l'implémentation, l'une des raisons pour lesquelles je n'aime pas trop le code réinterprété. Au lieu de cela, j'ai inclus ci-dessous un exemple entièrement autonome que vous pouvez essayer, adapter et utiliser comme référence. C'est le même code que j'ai essayé chez JSFiddle qui a échoué, mais il navigue à travers Firebug sans un gémissement.
C'est exactement ce que Google fait pour ses propres symboles disponibles dans la classe SYMBOL de l'API Maps, donc si cela ne vous convainc pas ... Quoi qu'il en soit, j'espère que cela vous aidera à créer et configurer correctement un marqueur SVG pour vos cartes Google endevours.
la source
Oui, vous pouvez utiliser un fichier .svg pour l'icône comme vous pouvez le faire .png ou un autre format de fichier image. Définissez simplement l'url de l'icône sur le répertoire où se trouve le fichier .svg. Par exemple:
la source
width="33px" height="50px"
Les choses vont mieux, vous pouvez maintenant utiliser des fichiers SVG.
la source
Comme mentionné par d'autres dans ce fil, n'oubliez pas de définir explicitement les attributs width et height dans le svg comme suit:
si vous ne le faites pas, aucune manipulation js ne peut vous aider car gmaps n'aura pas de cadre de référence et utilisera toujours une taille standard.
(Je sais que cela a été mentionné dans certains commentaires, mais ils sont faciles à manquer. Ces informations m'ont aidé dans divers cas)
la source
D'ACCORD! Je l'ai fait bientôt dans mon site Web, j'essaie de deux façons de créer le marqueur de carte google personnalisé, ce code d'exécution utilise canvg.js est la meilleure compatibilité pour le navigateur.Le code commenté n'est pas compatible avec IE11 de manière actuelle.
la source
Vous devez réussir
optimized: false
.Par exemple
Sans passer
optimized: false
, mon svg est apparu comme une image statique.la source