第一次尝试使用Google的地图API构建地图并遇到障碍。
我正在尝试制作一张自定义地图:
多个位置标记
标记的自定义图标
每个标记的自定义网址链接,以便每当有人点击标记时,都会转到网址链接
该地图适用于在伦敦Soho拥有几个办事处的客户。我一直在谷歌的操场上测试各种代码+使用w3学校代码测试器。我一直在寻找如何设置我的地图的各种元素的例子,这些元素在逐一进行时都可以正常工作。
然而,似乎我想要结合地图的所有功能,代码需要以不同的方式设置。
这是我到目前为止所拥有的:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Google Maps Multiple Markers</title>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
</head>
<body>
<div id="map" style="width: 100%; height: 300px;"></div>
<script type="text/javascript">
var locations = [
['56-58 Broadwick Street', 51.5053, -0.1481, 5],
['79 Wardour Street', 51.512370, -0.133300, 3],
];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 14,
center: new google.maps.LatLng(51.5132695,-0.1356768),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
var markers = new Array();
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
function AutoCenter() {
// Create a new viewpoint bound
var bounds = new google.maps.LatLngBounds();
// Go through each...
$.each(markers, function (index, marker) {
bounds.extend(marker.position);
});
// Fit these bounds to the map
map.fitBounds(bounds);
}
AutoCenter();
</script>
</body>
我们的想法是var位置将是我的客户拥有的各个办公地点。这些办公地点标记中的每一个都将链接到相关的办公室页面。
很抱歉不得不问你们,但是有人能引导我朝着正确的方向前进吗?我想我可以将所有代码拼凑在一起,但似乎我想要将所有3个功能组合在一起,代码设置不同。
感谢您的时间。
答案 0 :(得分:0)
对于初学者而言,不要将JS放在文档正文中,而是将其移到头部。
为窗口加载时添加一个事件监听器,以调用创建映射的初始化函数:
google.maps.event.addDomListener(window, 'load', initialize);
将所有当前不在任何函数中的JS移动到该初始化函数中。
我不确定您的AutoCenter功能的重点。如果只是为了使地图展开以适应标记的边界,也可以将其放入初始化函数中。
此外,这可能仅仅是某些数据的示例,而不是您实际执行的操作,但在最后一项之后使用尾随逗号会导致此数组在IE中出错:
var locations = [
['56-58 Broadwick Street', 51.5053, -0.1481, 5],
['79 Wardour Street', 51.512370, -0.133300, 3],
];