2010-04-19 2 views
0

Я нашел этот код для обратного геокодирования:Обратный геокодирования с Google Maps API

var point = new GLatLng (lat[1],long[1]); 
var geocoder = new GClientGeocoder(); 
geocoder.getLocations (point, function(result) { alert (lat[1]+' '+long[1]+' '+result.address); }); 

Но выскакивает предупреждение, говоря, что result.address является «неопределенным». Любые идеи, что может быть проблемой?


EDIT: Понял работает, спасибо.

ответ

3

вы можете включить определения «лат» и «длинные»? Кроме того, «long» является зарезервированным ключевым словом, поэтому, вероятно, это опечатка/ошибка.

также, результаты, которые возвращаются, по крайней мере, в формате gmaps v2 json, имеют более сложную структуру, а «result.address» не будет иметь ничего. когда я тестировал его, мне нужно, чтобы получить доступ к одному из адресов, с чем-то вроде:

result.Placemark[0].address

см http://code.google.com/apis/maps/documentation/geocoding/index.html#GeocodingResponses

+0

Спасибо, result.Placemark [0] .Address работы! –

+0

еще одна вещь, если я заменю «предупреждение» на переменную, скажем x = result.Placemark [6] .address; , то кажется, что этот х не доступен вне функции? –

+0

Да, все, что определено в обратном вызове, будет доступно только из этого обратного вызова. вероятно, лучше всего делать любую работу, которую вам нужно делать в обратном вызове, если это вообще возможно. Другим способом может быть определение объекта или массива вне функции и добавление к нему результата. –

1

Из этого я могу только сказать, что result не передается функции или это не объект.

Вам нужно узнать, какие параметры получает функция обратного вызова. Вот что написано в документации:

Этот ответ будет содержать код состояния, и в случае успеха - один или несколько объектов Placemark.

Если вы используете Firebug, вы можете увидеть, что передается в функцию обратного вызова так:

var point = new GLatLng (lat[1],long[1]); 
var geocoder = new GClientGeocoder(); 
geocoder.getLocations (point, function(result) { 
    window.console.log(arguments); 
    // Here you will see what arguments are passed and 
    // decide what to do about them 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^