Клуб API Карт

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

astronomy-now
16 октября 2013, 02:25

Как произвести обратное геокодирование координат метки по окончании ее перемещения? Данные нужно записать в скрытое поле формы. id поля = address.

Из документации к Яндекс.Картам не могу понять, как это сделать. Примеры тоже не помогают.

 

myPlacemark2.events.add('dragend', function(e) {
    // Получение ссылки на объект, который был передвинут.
    var thisPlacemark = e.get('target');
    // Определение координат метки
    var coords = thisPlacemark.geometry.getCoordinates();
    var lat = document.getElementById('latitude');
    lat.setAttribute ('value', coords[0].toPrecision(8));
    var lon = document.getElementById('longitude');
    lon.setAttribute ('value', coords[1].toPrecision(8));
    // и вывод их при щелчке на метке
    thisPlacemark.properties.set('balloonContent', coords);

    // Отправим запрос на обратное геокодирование
    ymaps.geocode(coords).then(function (res) {
        var names = [];
        // Переберём все найденные результаты и
        // запишем имена найденных объектов в массив names
        names.push(res.geoObjects.get(0)
        .properties.getAll()
        );
        
        // Выведем первый найденный объект    
        var adr = document.getElementById('address');
        adr.setAttribute ('value', names[0]);
    });
});
7 комментариев
Подписаться на комментарии к посту

 

adr.setAttribute('value', names[0]);

 

1. Если Вы не знаете спецификацию DOM не стоит ее использовать, используйте какой-нибудь jQuery

2.  При добавлении объекта туда где ожидается строка, на объекте будет вызван метод toString и Вы получите что-то типа "[object Object]"

Хорошо. Спасибо.

А код обратного геокодирования (из массива coords в строку типа "Россия, Москва, ул. Тверская, 13") не подскажете или просто ссылочкой не поделитесь ли? Просто реально так и не получилось собрать работающий код из документации, песочницы и других источников :( Везде не совсем то, что нужно. Или я многого прошу?

код ничем не будет отличаться от обычного геокодирования.

В вашем коде все в принципе рабочее за исключением  добавления данных в инпут. Должно быть что-то типа

adr.value = res.geoObjects.get(0).properties.get('text');

Спасибо!!! Все получилось)) Ура!)))

Добрый день! Возможно ли при указании координат геокодеру в ответе получать не только название улицы, где эти координаты находятся, но и номер дома, который рядом? Если дать координаты дома, то он возвращает номер дома...а если дать те, что на улице напротив дома, то пишет только название улицы=(

Можно использовать с опцией kind:"house"

Да, но если задать координаты леса выдает результатов 0....жалко, что не пишет хотя бы страну или еще чего-нибудь...=( Ладно, буду думать!