Клуб API Карт

Обратное геокодирование

Пост в архиве.

Всем здравия!

 

Подскажите как получить полный адрес точки от метода geocode(), т.е. я передаю методу координаты, на выходе нужно получить адрес (либо по частям: город, улица, дом). Долго искал решение возникшей проблемы, но нигде не нашел упоминания об этом.


Возможно иду не самым лучшим путем, поэтому опишу задачу:


На карту добавляется метка с возможностью её перемещения, на событие dragend стоит обработчик, в котором мне и нужно отлавливать новый адрес (после изменения положения метки)...

var placemark.events.add(['dragend'], function (e) {
   var new_coordinates = placemark.geometry.getCoordinates();
   var new_address_obj = ymaps.geocode(new_coordinates, { json: false, results: 1 });
   new_address_obj.then(
      function (res) {
         
      }
   );
});


UPD: Решил проблему используя иной вид результатов кодирования (передал параметр json: true методу geocode).

UPD 2: Поразмыслив немного более, нашел способ получить данные из объекта:

var full_address              = res.geoObjects.get(0).properties.get('text');
var country_region_city  = res.geoObjects.get(0).properties.get('description');
var street                        = res.geoObjects.get(0).properties.get('name');
3 комментария

1. Параметра json: true у геокодера АПИ нет.

2. Все данные можно получить так:

console.log(res.geoObjects.get(0).properties.getAll());

1. json: true это свойство параметра options, в API есть описание:

http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/geocode.xml

Вы путаете с http-геокодером.

В АПИ 2 геокодера. Тот что предоставляется через ymaps.geocode всегда возвращает геоколлекцию, а не данные.