Клуб API Карт

Сменить иконки на найденных объектах

echo10
22 марта, 10:08

Здравствуйте.

Использую 3 searchControl на карте для вывода разных типов объектов (магазины, кафе итд). Как сделать, чтобы результаты поисков имели разные иконки вместо синих?

Может есть более верные варианты как это сделать?

Пробовал использовать geocoder для получения списка, но он не находит объекты по тем же словам или показывает 1 московский главный филиал по названию. Хотя там можно  добавить placeMark'и из результатов поиска с нужными иконками. 

Странно, что в Казани ( "Оптово-розничный торговый центр Порт", его координаты около точки: 55.7240, 49.1952)  и в Москве (сеть магазов "Да!") нашлись магазины с фиолетовыми иконкам. 

----------------


       document.getElementById('showfoodshops').onclick = function () {
            if (!searchFoodShopsCtl) {              
               console.log('Start adding food shops...');
               objColl = new ymaps.GeoObjectCollection(); 
               myMap.geoObjects.add(objColl);           


               searchFoodShopsCtl = new ymaps.control.SearchControl({
                  options: {
                     provider: 'yandex#search',
                     noPopup : true
                           }
                  });
  
              myMap.controls.add(searchFoodShopsCtl);
              searchFoodShopsCtl.search('магазины продуктов');


              // ymaps.geocode('магазины').then(function (res) {
              // console.log(res.geoObjects.getLength()+' object(s) detected');
              // objColl.add(res.geoObjects);
              // console.log('Food shops added');
              // });
                    
            $('#showfoodshops').attr('value', 'Скрыть Продуктовые');
           }
           else {
             console.log('Start food shops...');                       
             myMap.controls.remove(searchFoodShopsCtl);
             searchFoodShopsCtl = null;

             //objColl.removeAll();
             //myMap.geoObjects.remove(objColl);
             //objColl.destroy();
             //objColl = null;
             $('#showfoodshops').attr('value', 'Показать Продуктовые магазы');
             console.log('Food shops deleted');                       
            }
        };

6 комментариев
задача похожа на эту:
https://yandex.ru/blog/mapsapi/standartnyy-funktsional-poiska-po-karte-zamena-standartnoy-ikonki


Для поиска организаций использовать геокодер не получится, есть отдельный API.
а платежные терминалы в городе чем лучше искать?
Например, Comepay.

Обновлено 22 марта, 11:47
Геокодер не умеет искать организации совсем, только топонимы по имени и координатам.
Только использовать 'yandex#search' provider у SearchControl, но с ним не получится переопределить вид меток.


Единственный вариант сделать как вы хотите – написать свой провайдер для SearchControl, внутри использовать АПИ Поиска по организациям (самому ходить за данными и формировать метки нужного вида). Всё бы ничего, но лимит у ППО всего 500 запросов в сутки. Делая минимум 3 запроса на каждой странице, вы не сможете показать ее более чем 500 / 3 = 166 пользователям, и то если они не будут делать никаких дополнительных запросов.
А если с помощью ППО отснять весь город большими участками, записать его в БД  и потом с этой инфой работать? 
Это запрещено условиями использования