我将javascript从https://google-developers.appspot.com/maps/documentation/javascript/examples/geocoding-simple修改为
var geocoder;
var postalArr = [];
postalArr.push(249586);
postalArr.push(266751);
var map;
function initialize(){
var myLatlng = new google.maps.LatLng(1.3667, 103.7500);
var myOptions = {
zoom: 13,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
};
if (postalArr) {
for (var i = 0; i < postalArr.length; i++ ) {
codeAddress(postalArr[i]);
}
}
map = new google.maps.Map(document.getElementById('map_canvas'),
myOptions);
}
function codeAddress(postal) {
geocoder.geocode( { 'postal': postal}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var markerE = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
脚本在for循环内,但不运行codeAddress函数。 我不知道为什么。
答案 0 :(得分:0)
两件事。
(1)需要在某处定义geocoder
,我把它放在initialize
function initialize(){
geocoder = new google.maps.Geocoder();
(2)没有postal
属性来馈送地理编码器。有效请求适用于latlng
或address
as explained here。
所以至少你必须指定一个国家。我不确定249586适用于哪个国家/地区,my demo我使用了两个加利福尼亚邮政编码,并在地址中添加了“,美国”。
geocoder.geocode( { 'address': postal + ", United States"},