【发布时间】:2016-01-04 23:27:23
【问题描述】:
在循环中创建许多自定义标记后,我似乎找不到能够链接到外部网站的解决方案,而每个标记都有一个唯一的链接。
我尝试了此代码的许多变体,但似乎一直遇到未定义的变量(下面的代码演示了未定义的 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 时也有那个属性,但没有运气......
以上代码在单击标记时会生成此错误: 未捕获的类型错误:无法读取未定义的属性“135”,其中 135 是单击的标记的索引号
我已经搜索了网络,但似乎没有解决方案可以解决我的问题。也许我错过了一些简单的东西,但这让我很难过[?]
PS:地图和标记生成完美,只是在单击我遇到问题的标记时出现 JS 错误!
TIA!
【问题讨论】:
标签: javascript google-maps google-maps-api-3