geocode

Статическая функция.

Обрабатывает запросы геокодирования. Результат запроса может быть представлен в формате JSON или в виде объекта GeoObjectCollection. Формат ответа геокодера описан в разделе Геокодирование.

См.: GeocodeResult

Возвращает объект-promise.

{ vow.Promise } geocode(request[, options])

Параметры:

Параметр Значение по умолчанию Описание
request *

Тип: String|Number[]

Адрес, для которого необходимо определить координаты (прямое геокодирование) или координаты, для которых необходимо определить адрес (обратное геокодирование).

options

Тип: Object

Опции.

options.boundedBy

Тип: Number[][]

Прямоугольная область на карте, где предположительно находится искомый объект.

options.json false

Тип: Boolean

Если true, то в функцию-обработчик передается JSON. В противном случае в функцию обработчик передается объект, содержащий в поле geoObjects результаты геокодирования в виде коллекции GeoObjectCollection. При геокодировании посредством геокодера 'yandex#map' в коллекции будут находиться объекты GeocodeResult.

options.kind 'house'

Тип: String

Вид топонима (только для обратного геокодирования).

Список возможных значений:

  • house - дом;
  • street - улица;
  • metro - станция метро;
  • district - район города;
  • locality - населенный пункт (город/поселок/деревня/село/...).
options.provider 'yandex#map'

Тип: IGeocodeProvider|String

Провайдер геокодирования. Можно воспользоваться одним из стандартных провайдеров:
  • 'yandex#map' - поиск по карте.
options.results 10

Тип: Integer

Максимальное количество возвращаемых результатов.

options.searchCoordOrder

Тип: String

Определяет каким образом нужно интерпретировать координаты в запросе.

options.skip 0

Тип: Integer

Число результатов, которое необходимо пропустить.

options.strictBounds false

Тип: Boolean

Искать только внутри области, заданной опцией boundedBy.

* Обязательный параметр/опция.

Примеры:

1.

// Осуществляет поиск объекта с именем "Москва".
// Полученный результат сразу отображается на карте.
var myGeocoder = ymaps.geocode("Moscow");
myGeocoder.then(function (res) {
    map.geoObjects.add(res.geoObjects);
    // Выведем в консоль данные, полученные в результате геокодирования объекта.
    console.log(res.geoObjects.get(0)
        .properties.get('metaDataProperty')
        .getAll());
}, function (err) {
    // Обработка ошибки.
});

2.

// Реализуем интерфейс IGeocodeProvider.
var randomPointProvider = {
        geocode: function (request, options) {
            var deferred = ymaps.vow.defer(),
                geoObjects = new ymaps.GeoObjectCollection(),
                results = options.results || 10;
            for (var i = 0; i < results; i++) {
                geoObjects.add(new ymaps.GeoObject({
                    geometry: {
                        type: "Point",
                        coordinates: [(Math.random() - 0.5) *
                            180, (Math.random() - 0.5) * 360
                            ]
                    },
                    properties: {
                        name: request + ' ' + i,
                        description: request +
                            '\'s description ' + i,
                        balloonContentBody: '<p>' + request +
                            ' ' + i + '</p>'
                    }
                }));
            }
            var response = {
                geoObjects: geoObjects,
                // Геообъекты поисковой выдачи.
                // Метаинформация ответа.
                metaData: {
                    geocoder: {
                        request: request,
                        // Строка обработанного запроса.
                        found: results,
                        // Количество найденных результатов.
                        results: results,
                        // Количество результатов в ответе.
                        skip: options.skip || 0
                        // Количество пропущенных результатов.
                    }
                }
            };
            // Выполняем асинхронную обработку.
            setTimeout(function () {
                deferred.resolve(response);
            }, 0);
            return deferred.promise();
        }
    },
    myGeocoder = ymaps.geocode("Москва", {
        provider: randomPointProvider
    });
myGeocoder.then(
    function (res) {
        map.geoObjects.add(res.geoObjects);
    },
    function (err) {
        // Обработка ошибки.
    }
);