Now that I can actually create an SVG marker這裏是我的願景:用戶點擊地圖,點擊觸發Ajax查詢,從遠程服務器獲取「長度」和「角度」值,並使用這些值點擊繪製給定長度和角度的SVG箭頭。在點擊事件中創建SVG標記
Ajax部分很簡單,一旦我有了長度和角度,我就可以找出箭頭的SVG語法。現在,我試圖創建「點擊並創建一個隨機箭頭」。下面的代碼有點作品。在「上一次」單擊中創建箭頭。也就是說,當我點擊第1點時,沒有任何反應。然後,當我點擊第2點時,在點1創建一個箭頭,對於點(n-1),等等,其中n是第n點擊。
<head>
<style type="text/css">
.quiver {width: 50px; height: 50px;}
</style>
<script type="text/javascript">
var map;
function div() {
var m = document.createElement('DIV');
m.innerHTML = '<div class="quiver"></div>';
return m;
}
function init() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(43, -89),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListener(map, "click", function (event) {
var marker = new RichMarker({
map: map,
position: event.latLng,
draggable: true,
flat: true,
anchor: RichMarkerPosition.MIDDLE,
content: div()
});
$('.quiver').svg({
onLoad: function(svg) {
svg.line(
Math.random()*49, Math.random()*49, Math.random()*49, Math.random()*49,
{stroke: 'black', strokeWidth: 2}
);
}
});
});
/*
google.maps.event.addListenerOnce(map, 'idle', function() {
$('.quiver').svg({onLoad: drawArrow});
});
*/
}
google.maps.event.addDomListener(window, 'load', init);
</script>
</head>
謝謝。我很希望通過jquery.svg來隱藏SVG的複雜性,但是,您的建議2似乎現在對我來說效率最高。我相信上面的建議1會在html div中找到* all *標記並繪製它們,而不是像其他選項那樣高效。 – punkish
第一個建議僅針對新創建的標記。 $(marker.content)僅將jQuery應用於marker.content中的html元素(儘管marker.content可能尚未附加到文檔中)。由於marker.content中只有兩個div,它應該和第二個建議幾乎一樣有效。 – Tomik