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

2つのこと。

geocoder(1)どこかで定義する必要があります。initialize

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

postal(2)ジオコーダーにフィードするプロパティなどはありません。有効なリクエストは、ここで説明されてlatlngいるaまたはaに対するものです。address

したがって、少なくとも国を指定する必要があります。249586の国が何であるかわかりません。デモでは、 2つのカリフォルニアの郵便番号を使用し、住所に「、UnitedStates」を追加しました。

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