В LeafletJS я хочу использовать значок SVG с динамическим текстом в нем.
let svgicon = `<svg id='marker` + markers[i][4] + `' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'>
<defs>
<style>
.cls-1 {
fill: #006aff;
}
.cls-2 {
font-size: 28px;
fill: #fff;
font-family: Montserrat-Regular, Montserrat;
}
</style>
</defs>
<path class="cls-1" d="M56.9679,24.9679A24.9679,24.9679,0,1,0,12.38928,40.42236h-.00067l18.4848,22.96552a1.38676,1.38676,0,0,0,2.22162.10583l17.86951-22.285H50.963A24.86853,24.86853,0,0,0,56.9679,24.9679Z"/>
<text id='label` + markers[i][4] + `' class='cls-2' transform='translate(32 34)' text-anchor='middle'>` + markers[i][1] + `</text>
</svg>`
let url = encodeURI('data:image/svg+xml;charset=utf8,' + svgicon).replace('#','%23');
Итак, я получаю хороший маркер, где пользовательский текст является частью SVG.
Эти пользовательские данные позже могут быть довольно сложными.Так что я использую простой пример там.В браузере мы получаем что-то вроде этого:
Теперь вопрос ... как применять внешние стили для hover
, mousedown
, mouseover
, click
или любые другие события?Нужно ли использовать сторону клиента (JS): декодирование -> изменить стиль -> кодирование?На разных мероприятиях я хочу стилизовать, обрисовывать, заполнять, отображать / скрывать скрытые пути и так далее, чтобы сделать этот маркер более выразительным / интерактивным / ценным.Конечно, я могу применить CSS filter
, чтобы изменить его цвет, но он слишком простой.Мне нужно независимо взаимодействовать с каждым путем или внутренним классом стиля SVG.