谷歌地图Api V3 - 地理编码功能,使纬度经度不起作用

时间:2012-07-10 02:34:02

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

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

1 个答案:

答案 0 :(得分:0)

两件事。

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

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

(2)没有postal属性来馈送地理编码器。有效请求适用于latlngaddress as explained here

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

geocoder.geocode( { 'address': postal + ", United States"},