Обратное геокодирование с помощью Google Maps API - PullRequest
0 голосов
/ 19 апреля 2010

Я нашел этот код для обратного геокодирования:

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 'undefined'. Есть идеи, в чем может быть проблема?


РЕДАКТИРОВАТЬ: Работает, спасибо.

Ответы [ 2 ]

3 голосов
/ 19 апреля 2010

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

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

result.Placemark[0].address

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

1 голос
/ 19 апреля 2010

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

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

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

Если вы используете 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
});
...