Drupal → Заменить иконки объектов на свои изображения (Geofield Yandex Maps)

03.12.2014

Инструкция по смене иконок объектов на свои изображения:

1. Копируем файл js/geofield_ymap_presets.example.js из папки модуля Geofield Yandex Maps в папку своего модуля или темы.

2. Прописываем в файле список своих пресетов. Пример:

ymaps.ready(function () {
  ymaps.option.presetStorage.add('custom#examplePreset1', {
    iconLayout: 'default#image',
    iconImageHref: 'http://api.yandex.ru/maps/doc/jsapi/2.0/examples/images/myIcon.gif',
    iconImageSize: [30, 42],
    iconImageOffset: [-3, -42]
  });
  ymaps.option.presetStorage.add('custom#examplePreset2', {
    iconLayout: 'default#image',
    iconImageHref: 'http://api.yandex.ru/maps/jsbox/examples/maps/ru/geolocation_api/images/man.png',
    iconImageSize: [27, 26],
    iconImageOffset: [-10, -24]
  });
  // ...
});

3. На странице настроек модуля admin/config/system/geofield-ymap прописываем путь до скопированного файла с пресетами:

4. В виджете, форматтере или представлении прописываем имя пресета:

Если в Views нужны разные пресеты для разных объектов, то добавляем в представление поле с именем пресета и указываем его в настройках стиля:

Демо

Написанное актуально для
Geofield Yandex Maps 7.x-1.x
Похожие записи

Комментарии

Пинджак
12.02.2015, 12:03

Есть ли способ использовать относительный путь у изображению? Т.е. делаю плагин, в папку кладу файл с пресетами и рядом картинку. Сейчас пришлось вставить костыль с полным адресом, хотелось бы более красивое решение.

Пинджак
16.02.2015, 07:52

Относительно папки с модулем. Или js-файла, в котором записан этот пресет.
Если в пресете просто указать "/folder/img.png", то скрипт ссылается на "site.ru/folder/img.png", а мне надо что-то вроде "site.ru/sites/all/modules/mymodule/img.png"

Андрей
23.02.2015, 17:49

Здравствуйте, я не пойму, как сделать разные маркеры во views? Указываю во views в поле "Пресет объектов по умолчанию": custom#examplePreset1,custom#examplePreset2. Но выводится маркер по умолчанию, если указать один пресет, то он выведется, а если два, то нет. А в поле preset field я не знаю, где брать поле с именем пресетов.

Андрей
23.02.2015, 19:26

Какой тип поля нужно создать и что в него написать?

любой, в который можно прописать название пресета

Андрей
23.02.2015, 20:10

Создал длинное текстовое поле и прописал в значение по умолчанию:
custom#examplePreset1
custom#examplePreset2
После указал в "Поле с пресетом" созданное поле и опять ничего. Не могли бы вы подробнее расписать этот момент, как правильно нужно это сделать?

1. добавить сущности поле
2. прописать у сущностей название пресета
3. добавить поле в views
4. указать поле в настройках

Андрей
24.02.2015, 13:26

добавить сущности поле

Это значит добавить поле к типу материала?

добавить поле тому, что вы выводите на карте

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

Гость
15.10.2015, 22:42

Добрый день. А возможно ли сменить иконку у кластера?

Михаил
03.12.2015, 19:53

наблюдается косячок. Если сайт мультиязычный, то он ищет картинку по адресу с префиксом языка, например не sites/all/themes/bla/images/bla.png , а ru/sites/all/themes/bla/images/bla.png и собственно не находит.

Как можно побороть?

Михаил
03.12.2015, 20:18

указывайте абсолютные пути

не очень удобно, но покатит! Спасибо Вам.

Сергей
28.01.2016, 13:48

xandeadx, подскажите пожалуйста. Как настроить модуль, чтобы ноды с разными терминами показывали разные значки? Что нужно добавить в поле пресет?

в Preset field укажите поле с именем пресета

Сергей
28.01.2016, 15:10

xandeadx, у меня есть тип материала. В нём есть ссылка на словарь терминов. Есть 10 нод данного материала. Допустим я добавляю в тип материала текстовое поле с название "Пресет", и задаю ему значение custom#examplePreset2 из js файла с описанием пресетов. В форматере Views я выбираю созданное поле "Пресет". Как это поможет отображать ноды разными флажками в зависимости от термина? (простите за непонятливость, но сижу уже целый день).

поле указанное в Preset field должно выводить имя пресета для текущего маркера

Сергей
28.01.2016, 15:41

xandeadx, все понял. Получилось. Огромное спасибо.

Здравствуйте! Сделал все, как вы говорили, все работает, спасибо большое за информацию! Но возник такой небольшой вопрос. Я создал поле с пресетом в типе материала. В views все работате, показывает разными цветами. Но когда я добавляю тип материала, указываю пресет, он показывается всегда со стандартным пресетом. Возможно ли сделать так, чтобы и в типе материала объекты были разного цвета?

В модуле косяк с полем для пресета в том, что в селектах используется не ключ (value), а текстовое значение… Т.е. хрен потом используешь это поле для фильтров, например…

Доброго времени суток!
У меня возник вопрос: возможно ли в одном пресете указать настройки и для полигона и для иконки? Я попробовал вот так:

ymaps.option.presetStorage.add('custom#selhoz_djiloi', {
    fillColor: '#ffff0066',
    strokeColor: '#ff000099',
    strokeWidth: 2,
    iconImageHref: '/sites/all/modules/geofield_ymap/images/icon-red.png',
    iconImageSize: [10, 16],
    iconImageOffset: [-3, -16]
  });

Для полигона настройки отображения применяются, а для иконки нет. Можете подсказать, где я ошибся?

Добавить комментарий