В начале, хочу поздравить Вас с Новым Годом и Рождеством! Пожелать крепкого здоровья, счастья и успехов во всем!
После публикации заметки «Используем Народную карту на своем сайте» читатели задавали мне вопрос: «Как можно ограничить область поиска на Народной карте?».
В этой небольшой заметке я расскажу как это легко сделать.
В качестве примера возьмем код из уже упомянутой заметки : «Используем элемент управления Поиск по карте»
Для поиска по Яндекс.Карте и Народной карте используется один и тот же класс Ymaps.Geocoder у которого есть специальные параметры для ограничения области поиска :
boundedBy — задает прямоугольная область на карте, где необходимо осуществлять поиск;
strictBounds в значении true – разрешает искать только внутри области, заданной опцией boundedBy.
Учитывая выше сказанное нам необходимо добавить следующий код:
// Прямоугольная область для Нижнего Новгорода var nnovgorodBounds = new YMaps.GeoBounds( new YMaps.GeoPoint(43.77352,56.198029), new YMaps.GeoPoint(44.119589,56.372946) ); |
Задаем прямоугольную область для поиска, например для Нижнего Новгорода, координатами левой нижней и правой верхней точек.
А строку добавления элемента поиска переписываем в виде:
map.addControl(new YMaps.SearchControl({geocodeOptions: {geocodeProvider: "yandex#pmap", boundedBy : nnovgorodBounds, strictBounds : true}})); |
Посмотрим на наш пример в действии:
С начала загрузим старую версию страницы и попробуем найти на карте объект со словом Юпитер.
Получим следующий результат
Теперь найдем тоже используя исправленный нами код, с ограниченной областью поиска
Для написания данной заметки использовалась статья «Как ограничить область поиска?».
Измененный расширенный пример по работе с геокодером
.
Добрый день!
После введения ограничения на поиск при введении поискового запроса запрос выполняется корректно и объект находится на карте с максимальным масштабом, но если сразу после этого вписать другой поисковый запрос на объект, который не находится в пределах видимости (он банально не отображается в окне карты), то поск выдаст фразу, что такого объекта нет. Если масштаб предварительно уменьшить, что бы весь город влезал в окно отображения карты, то поиск корректно выполняется. Можете сказать с чем это может быть связано?
Область поиска ограничена окном карты, а не областью заданной координатами. Есть статья про ограничение области поиска Как ограничить область поиска?