【发布时间】:2012-01-04 12:58:57
【问题描述】:
我一直在拼凑互联网上的各种代码(包括 StackOverflow),并且我有一个工作地图(几乎),它从一个数组中对邮政编码进行地理编码并为每个邮政编码创建信息窗口。
两个问题:
1) 我的信息窗口应该从另一个数组中获取文本,始终使用最后一个数组值
2) 我无法让地图自动居中。我正在使用一些在其他情况下有效的代码,但在我的代码中没有。
代码是不言自明的:
var geocoder = new google.maps.Geocoder();
var map = new google.maps.Map(document.getElementById('map'), {
//zoom: 10,
//center: new google.maps.LatLng(-33.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var postcodes = [
"EH14 1PR",
"KY7 4TP",
"IV6 7UP"
];
var descriptions = [
"Slateford",
"Cortachy",
"Marybank"
];
var markersArray = [];
var infowindow = new google.maps.InfoWindow();
var marker, i, address, description;
for(var i = 0; i < postcodes.length; i++) {
address = postcodes[i];
description = descriptions[i];
geocoder.geocode(
{
'address': address,
'region' : 'uk'
},
function(results, status){
if (status == google.maps.GeocoderStatus.OK) {
marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map
});
markersArray[i] = marker;
console.log(markersArray[i]);
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(description);
infowindow.open(map, marker);
}
})(marker, i));
} else {
alert("Geocode was not successful for the following reason: " + status);
return false;
}
}
);
var bounds = new google.maps.LatLngBounds();
$.each(markersArray, function (index, marker) {
bounds.extend(marker.position);
});
map.fitBounds(bounds);
console.log(bounds);
}
有什么想法吗?问题似乎与地理编码函数内的计数器 i 的值有关。
非常感谢任何帮助!
【问题讨论】:
标签: javascript google-maps google-maps-api-3