Блог API Яндекс.Карт

Как ограничить область поиска?

По умолчанию геокодер выдает весь список результатов в порядке их релевантности.

Если задать в поиске "улица Победы", то получим достаточно длинный список из 95 объектов.

Предположим, что необходимо нанести на карту результаты поиска, расположенные только в Москве или Московской области.

С помощью параметра геокодера boundedBy можно определить область, в которой предположительно находится объект. С этой области начнется вестись поиск, но количество найденных результатов не сократится,изменится только релевантность результатов.

// Область Москвы и Московской области
var moscowBounds = new YMaps.GeoBounds(
    new YMaps.GeoPoint(37.13268871914181, 55.55945544545429),
    new YMaps.GeoPoint(38.085747336675574, 55.946698202860325)


// По умолчанию геокодер возвращает первые 10 результатов поиска. Спомощью параметра results можно задать максимальное количество возвращаемых результатов.
map.addOverlay(new YMaps.Geocoder("победы", {boundedBy : moscowBounds, results : 100})

Ограничить количество результатов с помощью параметра results не представляется возможным, т. к. неизвестно какие результаты войдут в заданную область.

В решении данной задачи поможет параметр геокодера strictBounds, который указывает, что необходимо производить поиск только внутри области, заданной опцией boundedBy.


Немного изменим код:

// Область Москвы и Московской области
var moscowBounds = new YMaps.GeoBounds(
    new YMaps.GeoPoint(37.13268871914181, 55.55945544545429),
    new YMaps.GeoPoint(38.085747336675574, 55.946698202860325)

map.addOverlay(new YMaps.Geocoder("победы", {boundedBy : moscowBounds, strictBounds : true, results : 100})

В результате работы этого примера на карте будут отображены только те объекты, которые вошли в заданную область.

В http-геокодере можно задать область поиска с помощью параметров ll и spn, а с помощью параметра rspn ограничить поиск только заданной областью.

Более расширенный пример по работе с геокодером можно посмотреть по адресу:

http://ymaps.narod2.ru/examples/geocode-search.html