Google Maps Apiv3 - функция геокодирования для получения широты и долготы не работает

Я изменил 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. Я не уверен, почему.


person consprice    schedule 10.07.2012    source источник


Ответы (1)


Две вещи.

(1) нужно где-то определить geocoder, я поместил его в initialize

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

(2) не существует такой вещи, как свойство postal для подачи геокодеру. Допустимые запросы относятся к latlng или address как описано здесь.

Так что, по крайней мере, вы должны указать страну. Я не уверен, для какой страны предназначено 249586, в моей демонстрации я использовал два почтовых индекса Калифорнии и добавил к адресу «США».

geocoder.geocode( { 'address': postal + ", United States"}, 
person Tina CG Hoehr    schedule 10.07.2012
comment
Хм, я все еще не вижу булавку. 249586 — это почтовый индекс Сингапура, поэтому я сделал geocoder.geocode( { 'address': postal + ", Singapore"}, но пример Google смог найти адрес на основе 6 цифр, поэтому я не уверен, была ли проблема в этом. Спасибо за указание на инициализацию геокодера :) - person consprice; 10.07.2012
comment
Вы изменили номера обратно на сингапурские почтовые индексы? Попробуйте это обновление - person Tina CG Hoehr; 10.07.2012