¿Puedo usar mi image.svg convertido como icono de mapa de Google? Estaba convirtiendo mi imagen png a svg y quiero usar esto como el símbolo del mapa de Google que se puede rotar. Ya intenté usar el símbolo del mapa de Google pero quiero tener un ícono como auto, hombre, etc ... Es por eso que convertí algunos archivos png a svg, al igual que este sitio de ejemplo, ¿qué usa para estos http: / /www.goprotravelling.com/
91
Respuestas:
Puede renderizar su icono usando la notación de ruta SVG .
Consulte la documentación de Google para obtener más información.
Aquí tienes un ejemplo básico:
Aquí hay un ejemplo práctico sobre cómo mostrar y escalar un icono SVG de marcador:
Demostración de JSFiddle
Editar:
Otro ejemplo aquí con un ícono complejo:
Demostración de JSFiddle
Edición 2:
Y así es como puede tener un archivo SVG como icono:
Demostración de JSFiddle
fuente
Si necesita un svg completo, no solo una ruta y desea que sea modificable en el lado del cliente (por ejemplo, cambiar texto, ocultar detalles, ...) puede usar una 'URL' de datos alternativa con svg incluido:
JavaScript (Firefox) btoa () se utiliza para obtener la codificación base64 del texto SVG. También puede utilizar http://dopiaza.org/tools/datauri/index.php para generar URL de datos base.
Aquí hay un ejemplo completo de jsfiddle :
Puede encontrar información adicional aquí .
Evite la codificación base64:
Para evitar la codificación base64, puede reemplazar
'data:image/svg+xml;charset=UTF-8;base64,' + btoa(svg)
con'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg)
Esto debería funcionar con navegadores modernos hasta IE9. La ventaja es que
encodeURIComponent
es una función js predeterminada y está disponible en todos los navegadores modernos. También puede obtener enlaces más pequeños, pero debe probar esto y considerar usarlos en'
lugar de"
en su svg.Consulte también Optimización de SVG en URI de datos para obtener información adicional.
Compatibilidad con IE: para admitir marcadores SVG en IE, se necesitan dos pequeñas adaptaciones como se describe aquí: Marcadores SVG en IE . Actualicé el código de ejemplo para admitir IE.
fuente
data:image/svg+xml;utf8,
. Más información: css-tricks.com/probably-dont-base64-svg#
¿usó codificación de URL?Sé que esta publicación es un poco vieja, pero he visto tanta mala información sobre esto en SO que podría gritar. Así que solo tengo que poner mis dos centavos en un enfoque completamente diferente que sé que funciona, ya que lo uso de manera confiable en muchos mapas. Además de eso, creo que el OP quería la capacidad de rotar el marcador de flecha alrededor del punto del mapa también, que es diferente a rotar el icono alrededor de su propio eje x, y que cambiará hacia donde apunta el marcador de flecha en el mapa.
Primero, recuerde que estamos jugando con mapas de Google y SVG, por lo que debemos adaptarnos a la forma en que Google implementa su implementación de SVG para marcadores (o en realidad símbolos). Google establece su ancla para la imagen del marcador SVG en 0,0, que NO ES la esquina superior izquierda del viewBox SVG. Para evitar esto, debe dibujar su imagen SVG de manera un poco diferente para darle a Google lo que quiere ... sí, la respuesta está en la forma en que realmente crea la ruta SVG en su editor SVG (Illustrator, Inkscape, etc. .).
El primer paso es deshacerse de viewBox. Esto se puede hacer configurando viewBox en su XML en 0 ... así es, solo un cero en lugar de los cuatro argumentos habituales para viewBox. Esto apaga el cuadro de vista (y sí, esto es semánticamente correcto). Probablemente notará que el tamaño de su imagen salta inmediatamente cuando hace esto, y eso se debe a que el svg ya no tiene una base (el viewBox) para escalar la imagen. Así que creamos esa referencia directamente, estableciendo el ancho y el alto en el número real de píxeles que desea que tenga su imagen en el editor XML de su editor SVG.
Al establecer el ancho y el alto de la imagen svg en el editor XML, crea una línea de base para escalar la imagen, y este tamaño se convierte en un valor de 1 para las propiedades de escala del marcador de forma predeterminada. Puede ver la ventaja que esto tiene para la escala dinámica del marcador.
Ahora que tiene el tamaño de su imagen, mueva la imagen hasta que la parte de la imagen que desea tener como ancla esté sobre las coordenadas 0,0 del editor svg. Una vez que haya hecho esto, copie el valor del atributo d de la ruta svg. Notará que aproximadamente la mitad de los números son negativos, que es el resultado de alinear su punto de anclaje para el 0,0 de la imagen en lugar del viewBox.
El uso de esta técnica le permitirá rotar el marcador correctamente, alrededor de los puntos lat y lng en el mapa. Esta es la única forma confiable de vincular el punto del marcador svg que desea a la latitud y longitud de la ubicación del marcador.
Intenté hacer un JSFiddle para esto , pero hay algún error en la implementación, una de las razones por las que no me gusta tanto el código reinterpretado. Entonces, en cambio, he incluido un ejemplo completamente autónomo a continuación que puede probar, adaptar y usar como referencia. Este es el mismo código que probé en JSFiddle que falló, pero navega a través de Firebug sin un gemido.
Esto es exactamente lo que hace Google para sus propios símbolos disponibles en la clase SYMBOL de la API de Maps, así que si eso no te convence ... De todos modos, espero que esto te ayude a crear y configurar correctamente un marcador SVG para tus mapas de Google endevours.
fuente
Sí, puede usar un archivo .svg para el ícono al igual que puede usar .png u otro formato de archivo de imagen. Simplemente establezca la URL del icono en el directorio donde se encuentra el archivo .svg. Por ejemplo:
fuente
width="33px" height="50px"
- consulte stackoverflow.com/a/21783089/165673Las cosas van mejor, ahora mismo puedes usar archivos SVG.
fuente
Como lo mencionaron otros en este hilo, no olvide establecer explícitamente los atributos de ancho y alto en el svg así:
si no lo hace, ninguna manipulación de js puede ayudarlo, ya que gmaps no tendrá un marco de referencia y siempre usará un tamaño estándar.
(Sé que se ha mencionado en algunos comentarios, pero es fácil pasarlos por alto. Esta información me ayudó en varios casos)
fuente
¡OKAY! Hice esto pronto en mi web, pruebo dos formas de crear el marcador de mapa de Google personalizado, este código de ejecución, canvg.js, es la mejor compatibilidad para el navegador. El código comentado no es compatible con IE11 actualmente.
fuente
Tienes que pasar
optimized: false
.P.ej
Sin pasar
optimized: false
, mi svg apareció como una imagen estática.fuente