Google地图:可点击的自定义标记

时间:2016-01-04 23:27:23

标签: javascript google-maps google-maps-api-3

在循环中创建了许多自定义标记后,我似乎找不到能够链接到外部网站的解决方案,而每个标记都有唯一的链接。

我已尝试过此代码的许多变体,但似乎一直在运行未定义的变量(下面的代码演示了未定义的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属性未定义?),我试过这个.url时拥有那个财产,但没有运气......

以上代码在点击标记时会生成此错误: 未捕获的TypeError:无法读取未定义的属性“135”,其中135是单击标记的索引号

我在网上搜索过,但似乎无法解决我的问题。也许我错过了一些简单的东西,但它让我难过[?]

PS:地图和标记生成完美,只有点击我遇到问题的标记时出现JS错误!

TIA!

1 个答案:

答案 0 :(得分:0)

看起来像

window.open("http://www.example.com/" . markers[index][3], '_blank');

应该是

window.open(&#34; http://www.example.com/&#34; + map_markers [index] [3],&#39; _blank&#39;);