gpt4 book ai didi

google-maps - Google Maps V3 上的 SVG 标记

转载 作者:行者123 更新时间:2023-12-04 06:14:15 25 4
gpt4 key购买 nike

使用 Google Maps API v3,我的最终目的是创建一个给定长度和角度的箭头,但现在,我正在尝试创建一个 SVG 标记。我正在使用 Rich Market utilityjquery.svg plugin .以下代码创建了 div ,但不会创建 SVG。建议? (我不喜欢这些库,但这些是我目前发现的)。

<head>
<script type="text/javascript">
var map, marker;
function drawCircle(svg) {
svg.circle(15, 15, 10, {fill: 'none', stroke: 'red', strokeWidth: 3});
}

function div() {
var m = document.createElement('DIV');
m.innerHTML = '<div class="arrow"></div>';
$('.arrow').svg({onLoad: drawCircle});
return m;
}

function init() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 1,
center: new google.maps.LatLng(0, 0),
mapTypeId: google.maps.MapTypeId.ROADMAP
});

marker = new RichMarker({
map: map,
position: new google.maps.LatLng(30, 50),
draggable: true,
flat: true,
anchor: RichMarkerPosition.MIDDLE,
content: div()
});
}

google.maps.event.addDomListener(window, 'load', init);
</script>
</head>
<body><div id="map"></div></body>

最佳答案

问题出在div()功能。调用 $('.arrow')与正在创建的 div 不匹配,因为它尚未附加到 DOM 节点树。您必须在创建标记后调用它。

删除 $('.arrow').svg({onLoad: drawCircle});来自 div()函数并稍后调用它。

function div() {
var m = document.createElement('DIV');
m.innerHTML = '<div class="arrow"></div>';
return m;
}

我想最好的方法是在 init() 的末尾为 map 的空闲事件添加监听器功能。
function init() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 1,
center: new google.maps.LatLng(0, 0),
mapTypeId: google.maps.MapTypeId.ROADMAP
});

marker = new RichMarker({
map: map,
position: new google.maps.LatLng(30, 50),
draggable: true,
flat: true,
anchor: RichMarkerPosition.MIDDLE,
content: div()
});

google.maps.event.addListenerOnce(map, 'idle', function() {
$('.arrow').svg({onLoad: drawCircle});
});
}

关于google-maps - Google Maps V3 上的 SVG 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7462563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com