Клуб API Карт

Поиск по региону.

Пост в архиве.
tranalis
7 сентября 2012, 17:13

Хоть  название и выглядит просто, но я ничего не могу найти.

На данный момент использую boundedBy, но он квадратный и захватывает края соседних регионов.

Можно нарисовать  многоугольный boundedBy и как если да?

Спасибо. 

 

window.onload = function () {
    ymaps.ready(function () {
      ymaps.geocode('Кемеровская область', { results: 1 }).then(function (res) {
      // Выбираем первый результат геокодирования 
      var firstGeoObject = res.geoObjects.get(0);

      // Создание экземпляра карты
      var map = new ymaps.Map('map', {
           center: firstGeoObject.geometry.getCoordinates(),
           zoom: 7,
           type: "yandex#publicMap"
      });

      map.controls
      // Кнопка изменения масштаба
      .add('zoomControl')
      // Список типов карты
      .add('typeSelector')
      // Кнопка изменения масштаба - компактный вариант
      // Расположим её справа
      .add('smallZoomControl', { right: 5, top: 75 })
      // Стандартный набор кнопок
      .add('mapTools');

      window.myMap = map;
      // Загрузка YMapsML-файла
      var myGeocoder = ymaps.geocode("река", {
        results:10,
        boundedBy: myMap.getBounds(), 
        strictBounds: true  
      });
      myGeocoder.then(function (res) {
        res.geoObjects.each(function (item) {
          var bounds = item.properties.get("boundedBy");
          item.options.set({preset: 'twirl#pinkStretchyIcon'});
          item.options.set({iconContentLayout: ymaps.templateLayoutFactory.createClass('<i>Гыыыыыы</i>')});

          // Добавление геообъекта на карту
          myMap.geoObjects.add(item);
          // Изменение области показа карты
          //myMap.setBounds(bounds);
          alert(bounds);
        });
      },
      function (error) { // Вызывается в случае неудачной загрузки YMapsML-файла
        alert("При загрузке YMapsML-файла произошла ошибка: " + error);
      });
      });
    });

2 комментария

Такого нет.

НО если очень надо можно использовать прямоугольный boundedBy, и дофильтровывать его выдачу, проверяя попадание найденных точек в некоторую область (полигон)

 

Спасибо!

Использовал так:

if (myPolygon.geometry.contains(item.geometry.getCoordinates())) myMap.geoObjects.add(item);