Проблема здесь похожа на ваш предыдущий вопрос . Когда вы звоните
$('.quiver').svg({
onLoad: function(svg) {
...
}
});
в прослушивателе события click созданный маркер еще не был прикреплен к дереву DOM-узла. Приятное чтение о синхронизации и синхронизации в JavaScript здесь .
(n-1) -я стрелка отображается, потому что команда jQuery $('.quiver')
выбирает все элементы с классом колчана (это n-1 элементов, n-й еще нет в дереве узлов DOM) и только код (n-1) применим к коду svg.
К сожалению, событие idle
карты (или любое другое событие в Google Maps API v3) в этом случае не поможет.
Я думаю, есть 2 решения проблемы:
Одним из решений является нацеливание созданного HTML-элемента с помощью jQuery непосредственно в прослушиватель событий click.
$(marker.content).find('.quiver').svg({
onLoad: function(svg) {
svg.line(
Math.random()*49, Math.random()*49,
Math.random()*49, Math.random()*49,
{stroke: 'black', strokeWidth: 2}
);
}
});
Второе решение - не использовать плагин jQuery svg, а создать svg непосредственно в функции div()
.
function div() {
var m = document.createElement('DIV');
m.innerHTML = '<div class="quiver"><svg xmlns="http://www.w3.org/2000/svg" version="1.1">' +
'<line x1="' + Math.random()*49 + '" y1="' + Math.random()*49 + '" ' +
'x2="' + Math.random()*49 + '" y2="' + Math.random()*49 + '" style="stroke:rgb(0,0,0);stroke-width:2"/></svg></div>';
return m;
}
и удалите команду jQuery $('.quiver').svg(...);
в прослушивателе событий щелчка.