Использование сгенерированного javascript SVG со встроенным внешним SVG в качестве значков Google Maps, - PullRequest
1 голос
/ 05 февраля 2020

Итак, я разрабатываю сайт, который использует Google Maps JavaScript API. У меня есть несколько маркеров, для которых я хотел бы создать значок SVG, но этот SVG должен использовать переменные JavaScript (для отображения числа на значке), а также отображать внешний SVG (например, значок FontAwesome).

Мне удалось сгенерировать значки с переменными JavaScript следующим образом:

let newIcon = [
    '<svg width="' + size + 'px" height="' + size + 'px" viewBox="0 0 100 110" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >',

    '<ellipse id="circuloExterior" fill="' + mainColor + '" cx="50" cy="50" rx="42.8" ry="42.8"/>',
    '<polygon id="triangulo" fill="' + mainColor + '" stroke="' + mainColor + '" stroke-width="1.6" points="28,83 72,83 50,108"/>',
    '<ellipse id="circuloIntermedio" fill="' + mainColor + '" cx="50" cy="50" rx="41.2" ry="41.2"/>',
    '<ellipse id="circuloInterior" stroke="' + mainColor + '" fill="' + secColor + '" stroke-width="1.6" cx="50" cy="50" rx="32" ry="32"/>',

    '</svg>',
].join('\n');

newIcon = {
    url: 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(newIcon),
}

И затем я использую newIcon в качестве значка маркера. Это работает без проблем.

Но, когда я пытаюсь подключиться к внешнему SVG, который я хотел бы добавить к значку (наряду с существующим), он не работает:

<image xlink:href="<link to external SVG on the same server>" />

Я попытался создать файл SVG с точно такой же внешней ссылкой SVG, и он работает автономно, поэтому с тегом image проблем нет.

Я также пытался явно указание SVG в качестве пути вместо ссылки на него, и это работает, но это не совсем то, что я ищу:

<g transform="translate(30,25) scale(0.13)"><path fill="#000000" d="M128 288c0-6.25-2-12.25-5-17.25-3.25-5-16.5-22-21.75-38.75-0.75-2.75-3.25-4-5.25-4s-4.5 1.25-5.25 4c-5.25 16.75-18.5 33.75-21.75 38.75-3 5-5 11-5 17.25 0 17.75 14.25 32 32 32s32-14.25 32-32zM256 256c0 70.75-57.25 128-128 128s-128-57.25-128-128c0-25.25 7.75-48.75 20.25-68.75 12.75-20 66.25-87.75 86.5-155.25 3.25-10.75 13.25-16 21.25-16s18.25 5.25 21.25 16c20.25 67.5 73.75 135.25 86.5 155.25s20.25 43.5 20.25 68.75z"/></g>

Любые советы? Спасибо.

1 Ответ

0 голосов
/ 04 апреля 2020

С Mozilla :

Файлы SVG, отображаемые с <image>, обрабатываются как изображения: внешние ресурсы не загружаются, посещенные стили не применяются и они не могут быть интерактивными. Чтобы включить элементы Dynami c SVG, попробуйте <use> с внешним URL-адресом.

Я полагаю, вы можете взять <use> или <object>, например, так:

<svg xmlns="http://www.w3.org/2000/svg" width="200px" height="200px" version="1.1">
    <object height="200" width="200" data="https://www.wikipedia.org/portal/wikipedia.org/assets/img/sprite-9ba8de1b.svg"/>
</svg>

Подробнее в этой теме ...


Но я бы вместо этого скачал svg из внешнего источника до . Я создаю иконку. Если вы попытаетесь загрузить его несколько раз, он все равно будет кэширован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...