Posso usar meu image.svg convertido como ícone do mapa do Google. Eu estava convertendo minha imagem png para svg e quero usar isso como o símbolo do mapa do Google que pode ser girado. Já tentei usar o símbolo do mapa do google mas quero ter um ícone como carro, homem, etc ... É por isso que converti alguns arquivos png para svg, assim como neste site de exemplo o que ele usa para esses http: / /www.goprotravelling.com/
91
Respostas:
Você pode renderizar seu ícone usando a notação de caminho SVG .
Consulte a documentação do Google para obter mais informações.
Aqui está um exemplo básico:
Aqui está um exemplo prático de como exibir e dimensionar um ícone de marcador SVG:
JSFiddle demo
Editar:
Outro exemplo aqui com um ícone complexo:
JSFiddle demo
Editar 2:
E aqui está como você pode ter um arquivo SVG como um ícone:
JSFiddle demo
fonte
Se você precisa de um svg completo não apenas de um caminho e deseja que ele seja modificável no lado do cliente (por exemplo, alterar o texto, ocultar detalhes, ...), você pode usar um 'URL' de dados alternativo com o svg incluído:
JavaScript (Firefox) btoa () é usado para obter a codificação base64 do texto SVG. Você também pode usar http://dopiaza.org/tools/datauri/index.php para gerar URLs de dados de base.
Aqui está um exemplo completo de jsfiddle :
Informações adicionais podem ser encontradas aqui .
Evite a codificação base64:
Para evitar a codificação base64, você pode substituir
'data:image/svg+xml;charset=UTF-8;base64,' + btoa(svg)
por'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg)
Isso deve funcionar com navegadores modernos até o IE9. A vantagem é que
encodeURIComponent
é uma função js padrão e está disponível em todos os navegadores modernos. Você também pode obter links menores, mas você precisa testar isso e considerar o uso em'
vez de"
em seu SVG.Consulte também Otimizando SVGs em URIs de dados para obter informações adicionais.
Suporte ao IE: para oferecer suporte aos marcadores SVG no IE, são necessárias duas pequenas adaptações, conforme descrito aqui: Marcadores SVG no IE . Atualizei o código de exemplo para oferecer suporte ao IE.
fonte
data:image/svg+xml;utf8,
. Mais informações: css-tricks.com/probably-dont-base64-svg#
você usou a codificação de URL?Eu sei que este post é um pouco antigo, mas eu vi tanta informação ruim sobre isso no SO que eu poderia gritar. Então, eu só preciso jogar meus dois centavos em uma abordagem totalmente diferente que eu sei que funciona, já que a uso de maneira confiável em muitos mapas. Além disso, acredito que o OP queria a capacidade de girar o marcador de seta ao redor do ponto do mapa também, o que é diferente de girar o ícone em torno de seu próprio eixo x, y, que mudará para onde o marcador de seta aponta no mapa.
Primeiro, lembre-se de que estamos brincando com o Google maps e SVG, então devemos acomodar a maneira como o Google implementa sua implementação de SVG para marcadores (ou, na verdade, símbolos). O Google define sua âncora para a imagem do marcador SVG em 0,0, que NÃO É o canto superior esquerdo do viewBox SVG. Para contornar isso, você deve desenhar sua imagem SVG de forma um pouco diferente para dar ao Google o que ele deseja ... sim, a resposta está na maneira como você realmente cria o caminho SVG em seu editor SVG (Illustrator, Inkscape, etc. .).
A primeira etapa é livrar-se do viewBox. Isso pode ser feito definindo viewBox em seu XML como 0 ... isso mesmo, apenas um zero em vez dos quatro argumentos usuais para viewBox. Isso desativa a caixa de visualização (e sim, isso é semanticamente correto). Você provavelmente notará que o tamanho da sua imagem pula imediatamente ao fazer isso, e isso porque o svg não tem mais uma base (o viewBox) para dimensionar a imagem. Portanto, criamos essa referência diretamente, definindo a largura e a altura para o número real de pixels que você deseja que a sua imagem esteja no editor XML do seu editor SVG.
Ao definir a largura e a altura da imagem SVG no editor XML, você cria uma linha de base para o dimensionamento da imagem e esse tamanho se torna um valor de 1 para as propriedades de escala do marcador por padrão. Você pode ver a vantagem que isso tem para o dimensionamento dinâmico do marcador.
Agora que você tem sua imagem dimensionada, mova a imagem até que a parte da imagem que você deseja ter como âncora esteja sobre as coordenadas 0,0 do editor SVG. Depois de fazer isso, copie o valor do atributo d do caminho svg. Você notará que cerca de metade dos números são negativos, que é o resultado do alinhamento de seu ponto de ancoragem para 0,0 da imagem em vez de viewBox.
Usar essa técnica permitirá que você gire o marcador corretamente, ao redor do ponto lat e lng no mapa. Esta é a única maneira confiável de vincular o ponto no marcador SVG que você deseja à latitude e longitude da localização do marcador.
Tentei fazer um JSFiddle para isso , mas há algum bug na implementação, um dos motivos pelos quais não gosto tanto de código reinterpretado. Então, em vez disso, incluí um exemplo totalmente independente abaixo que você pode experimentar, adaptar e usar como referência. Este é o mesmo código que tentei no JSFiddle que falhou, mas ele navega pelo Firebug sem um gemido.
Isso é exatamente o que o Google faz pelos seus próprios poucos símbolos disponíveis na classe SYMBOL da API do Google Maps, então se isso não convence você ... De qualquer forma, espero que isso ajude você a fazer e configurar corretamente um marcador SVG para seus esforços do Google Maps.
fonte
Sim, você pode usar um arquivo .svg para o ícone da mesma forma que pode usar .png ou outro formato de arquivo de imagem. Basta definir a url do ícone para o diretório onde o arquivo .svg está localizado. Por exemplo:
fonte
width="33px" height="50px"
- consulte stackoverflow.com/a/21783089/165673As coisas estão melhores, agora você pode usar arquivos SVG.
fonte
Conforme mencionado por outros neste tópico, não se esqueça de definir explicitamente os atributos de largura e altura no svg assim:
se você não fizer isso, nenhuma manipulação de js poderá ajudá-lo, pois os gmaps não terão um quadro de referência e sempre usarão um tamanho padrão.
(sei que foi mencionado em alguns comentários, mas são fáceis de passar despercebidos. Esta informação ajudou-me em vários casos)
fonte
ESTÁ BEM! Fiz isso em breve na minha web, tento duas maneiras de criar o marcador de mapa personalizado do google, este código de execução usando canvg.js é a melhor compatibilidade para navegador. O código comentado não é compatível com o IE11 atualmente.
fonte
Você precisa passar
optimized: false
.Por exemplo
Sem passar
optimized: false
, meu svg apareceu como uma imagem estática.fonte