0

我将 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 函数。我不确定为什么。

4

1 回答 1

0

两件事情。

(1)需要在geocoder某处定义,我把它放在initialize

function initialize(){
  geocoder = new google.maps.Geocoder();

(2) 没有postal属性可以为地理编码器提供数据。有效请求是针对 alatlng或 an 的address ,如此处所述

所以至少你必须指定一个国家。我不确定 249586 是针对哪个国家/地区的,在我的演示中,我使用了两个加利福尼亚邮政编码,并在地址中添加了“,美国”。

geocoder.geocode( { 'address': postal + ", United States"}, 
于 2012-07-10T02:45:09.950 回答