在循环内创建许多自定义标记后,我似乎找不到能够链接到外部网站的解决方案,而每个标记都有唯一的链接。
我尝试了此代码的许多变体,但似乎不断遇到 undefined variable (下面的代码演示了未定义的map_markers变量)
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script type="text/javascript">
var map;
// generated by PHP, but output looks like this...
var map_markers = [[43.536396, -110.740956, "T1", "/test-url"],[43.812092, -111.097181, "T2", "/test-url2"],[43.53640889360323, -110.74090051257326, "T3", "/test-url3"],[43.463373, -110.762519, "T4", "/test-url4"]];
google.maps.event.addDomListener(window, 'load', function() {
var mapCanvas = document.getElementById('map');
map = new google.maps.Map(mapCanvas, {
center: new google.maps.LatLng(37.8846194, -95.660041),
zoom: 4,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
for (var i = 0; i < map_markers.length; i++) {
var marker = new google.maps.Marker({
position: {'lat': map_markers[i][0], 'lng': map_markers[i][1]},
map: map,
title: map_markers[i][2]
});
google.maps.event.addListener(marker, 'click', (function(markers, index) {
return function() {
window.open("http://www.example.com/" . markers[index][3], '_blank');
}
})(map_markers, i));
}
});
</script>
注意:上面的代码使用了一个附件,但我尝试了很多变体,例如向标记添加“url”参数(但这会导致 url 属性未定义?),我尝试过 this.url也拥有该属性(property),但没有运气......
上面的代码在单击标记时会生成此错误: 未捕获类型错误:无法读取未定义的属性“135”,其中 135 是单击的标记的索引号
我已经在网上搜索过,但似乎没有解决方案可以解决我的问题。也许我错过了一些简单的东西,但这让我很难过[?]
PS: map 和标记生成完美,只是在单击我遇到问题的标记时出现 JS 错误!
TIA!
最佳答案
看起来像
window.open("http://www.example.com/" . markers[index][3], '_blank');
应该是
window.open("http://www.example.com/ "+ map_markers[index][3], '_blank');
关于javascript - 谷歌地图 : Clickable Custom Marker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34601730/