«whatAsoft: Яндекс.карта объектов инфоблока» Практика использования модуля
Автор: Потапов Валентин
С момента публикации решения «whatAsoft: Яндекс.карта объектов инфоблока» в каталоге маркетплейса прошло уже более 7 лет. За это время решение было установлено на множестве сайтов, а мы получили большое количество вопросов по базовой и нестандартной настройке решения. Базовая настройка довольно подробно описана на странице решения в маркетплейс. А в этой статье мы приведем вопросы и наши ответы, касающиеся более глубокой настройки решения.
Если переходы по сайту осуществляются без перезагрузки страницы, то как в таком случае можно повторно инициализировать карту?
Для инициализации карты воспользуйтесь следующим кодом:
wmap = new WASYandexMapList();
wmap.Init($(".was-map-yandex"));
Если предварительно вам необходимо деинициализировать имеющуюся карту, то к ней можно обратиться через data-параметр "ymap" контейнера карты, используя следующий код:
$(".was-map-yandex").data("ymap").destroy();
$(".was-map-yandex").removeData("ymap");
Подскажите, как изменить стили? Например, хочу поменять шрифт заголовка организации в окошке.
Для того, чтобы добавить свои стили, существует несколько вариантов действия:
1. Добавлять свои стили в основной файл стилей сайта.
2. Скопировать шаблон оформления компонента (папку .default), который находится по пути <домен>/bitrix/components/whatasoft/map.yandex.list/templates/.default, разместить его в папке <домен>/bitrix/components/whatasoft/map.yandex.list/templates/ и назвать, как посчитаете нужным. В полученном шаблоне можно изменить файл со стилями style.css и указать в настройках компонента, что использоваться должен ваш шаблон.
При этом при обновлении решения перепишется только шаблон .default. В дальнейшем, в случае расхождения функционала, вы сможете обновить недостающие части в своем шаблоне из шаблона .default.
Как можно при загрузке страницы сразу показывать один балун открытым (без клика мышкой)?
Чтобы взаимодействовать с элементами карты после её загрузки, вы можете воспользоваться методами API Яндекс.Карт https://tech.yandex.ru/maps/doc/jsapi/2.1/quick-start/tasks/quick-start-docpage/.
Обратиться к объекту карты можно через дата-атрибуты блока карты следующим образом: $('.was-map-yandex').data('ymap'). Такой подход позволит не изменять код решения.
Можно ли на карте расположить точки разных категорий? К примеру, нужно 5 категорий (памятники, заправки, магазины, ночлег, ремонт) У каждой категории свой цвет маркера должен быть.
Да, для каждой категории инфоблока есть возможность задать свою иконку. Она будет назначена всем объектам категории.
Как вывести отдельную иконку для элемента?
Для задания индивидуальных иконок у точек на карте нужно:
-
Создать у выводимого на карте инфоблока свойство "Иконка для карты" с типом "Справочник" и выбрать для него справочник иконок "WASGeoobjectsmapMarkers (hl_was_geoobjectsmap_markers)", скрин http://joxi.ru/BA0p9O5fJepJRA
-
Заполнить у элементов инфоблока созданное свойство, выбрав из списка нужную иконку для каждого элемента. Можете предварительно добавить свои иконки в справочник или использовать имеющиеся.
-
Отметить в настройках карты чекбокс "Использовать заданные у элемента иконки (если есть)".
Решение будет работать с обычным фильтром новостей или умным фильтром?
Да, можно настроить. В настройках компонента имеется параметр "Фильтр" (FILTER_NAME), в котором можно указать имя переменной, содержащей массив параметров для фильтра.
Поддерживаются массивы, формат которых соответствует массиву фильтра для метода CIBlockElement::GetList.
Большинство вопросов, которые мы получали от клиентов, было связано с кастомизацией, выводом различных типов элементов и фильтрацией объектов на карте. Как видите, небольшие программные доработки помогают быстро и просто решать поставленные задачи.