[YandexMaps2] 1.1.2 Полноценная работа с mFilter2 и кастомизация плагинами


- Добавлен новый метод работы с mFilter2, поддерживающий вывод результатов в текстовом виде
- Добавлено событие плагина ymOnLoadObjects с параметрами: array $data, array $objects, array $snippetProperties
- Добавлен параметр objectsInScope в сниппет YandexMaps2
- Добавлена системная настройка ym2_objects_in_scope для бек-энда
- Добавлены параметры defaultIconContent, defaultIconCaption и defaultBalloonContent в сниппет YandexMaps2
- Добавлен параметр scrollZoom в сниппет YandexMaps2
- Добавлен перехват ошибки из-за некорректного JSON в default.js
- Поправлено большинство конфликтов, возникающих из-за повторной загрузки jQuery

Сниппет YandexMaps2

Основной и единственный сниппет компонента получил 5 новых параметров.

objectsInScope
Эту функцию многие знают с первой версии, там она называлась checkZoomRange. Если параметр активирован, то все объекты карты попадут в область видимости, независимо от установленных center и zoom. Особенно это удобно при использовании mFilter2, ибо при фильтрации совершенно нормально, когда все результаты поиска отображаются в поле зрения.
Кстати, для бек-энда тоже добавлена такая системная настройка ym2_objects_in_scope.

scrollZoom
Зуммирование при скролле. Отключив эту функцию карта перестанет зумировать при скроллинге мышкой. Некоторые люди приходят в бешенство, когда эта функция активирована. Именно поэтому он по-умолчанию включён. Пришлось оставить его включённым по-умолчанию, чтобы не нарушать работу компонента после обновления.

defaultIconContent
defaultIconCaption
defaultBalloonContent
Эти параметры будут использованы, если у объекта на карте они не указаны.

Более подробнее можно почитать в документации компонента, в разделе Сниппеты.

Взаимодействие с mFilter2

Компонент научился выводить результаты и на карте, и давать mFilter выводить их в текстовом виде. Настраивается это немного иначе, чем раньше, поэтому предлагаю всем перейти на новый способ взаимодействия, не смотря на то, что поддержка старого метода осталась.

События для плагинов

У компонента появились события плагина. Пока одно, но в будущем их станет больше!

ymOnLoadObjects
С помощью этого события мне уже удавалось:
— добавлять точкам на карте свои иконки,
— выводить на фронт-энде объекты на карте, добавленные через MIGX.
Простора для действий, на самом деле, гораздо больше. При желании, можно полностью изменить список объектов на карте! Планирую сделать пару кейсов работы с этим плагином.

Ошибки и конфликты

И последнее, но не менее важное!
Мне удалось выявить проблему работы в бек-энде с некоторыми компонентами. Между YandexMaps2 и компонентами, которые используют jQuery, происходил конфликт.
Ну и на фронт-энде, при выдаче mFilter2 сообщения о том, что результатов для вывод нет, компонент пытался распарсить эту строку, как JSON, от этого происходила ошибка.
Выявил и устранил!
Павел Гвоздь
19 ноября 2018, 08:21
modx.pro
2
682
+11
Поблагодарить автора Отправить деньги

Комментарии: 20

mfilin
29 ноября 2018, 21:38
0
более менее понятно как работать с компнентом, но можно ли пояснить как передавать массив $objects
так координаты парсятся в бд и нужно на их основе создавать метку…
вот код чанка
[[!YandexMaps2?
                    &defaultIconContent=`test`
                    &defaultBalloonContent=`test2`
                    &objects=`[{
                        type: 'placemark',
                         geometry: {
                             coordinates:[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]
                         }
                    }]`
                    &class=`msProduct`
                    &objectsInScope=`true`
                    &center=`[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]`
                ]]
ymaps_center возвращает строку в виде [x, y]
    Павел Гвоздь
    29 ноября 2018, 21:45
    +1
    В коде страницы можно посмотреть, что за свойства должны иметь объекты — prntscr.com/lonbzz

    А вообще, завтра будет статья, как работать через событие плагина YandexMaps2 и добавлять точки из MIGX с кастомными иконками на фронт-энде. То, что вы хотите сделать костылями, можно реализовать изящнее, плагином.
      mfilin
      29 ноября 2018, 22:18
      0
      обязательно почитаю и применю, но пока этого хватит…
      [[!YandexMaps2?
                          &objects=`[{
                              "type":"placemark",
                          	"geometry":[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]
                      	}]`
                          &objectsInScope=`true`
                          &center=`[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]`
                      ]]
      при передаче &zoom он как был 10 так и остается :(
        Павел Гвоздь
        30 ноября 2018, 06:49
        +1
        А вот и статья уже на Modx.pro.
          mfilin
          30 ноября 2018, 06:54
          0
          отлично! :) так zoom меняется или нет? )
            Павел Гвоздь
            30 ноября 2018, 06:55
            0
            Конечно меняется. Почему нет? Вы вместе с objectsInScope его ставите?
              mfilin
              30 ноября 2018, 06:58
              0
              [[!YandexMaps2?
                                  &objects=`[{
                                      "type":"placemark",
                                  	"geometry":[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]
                              	}]`
                                  <strong>&zoom=`5`</strong>
                                  &objectsInScope=`true`
                                  &center=`[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]`
                              ]]
              вот страница plestate.ru/id-2.-prodazha-kottedzha-pod-otdelku-v-kp-solovi.html с этим шаблоном (.html дописать только) или перейти в коттеджи первый объект
                Павел Гвоздь
                30 ноября 2018, 07:00
                0
                Ну так читай доку, зачем меня доставать этими вопросами? Да ещё не в ТП компонента.
                  mfilin
                  30 ноября 2018, 07:06
                  +2
                  дружище, я ни в коем случае не хочу чем либо обидеть или достать тебя :)
                  вы пишите код, как сами говорите что он изящен и безупречен — верю! но в
                  доках порой неочевидно написано ( вот и приходится по разному доставать инфу

                  по поводу ТП — компонент заведен на другого человека, а разбираемся как всегда
                  ночью)

                  ps еще раз говорю, что не хотел бы чем то обидеть )
                    Павел Гвоздь
                    30 ноября 2018, 07:10
                    0
                    как сами говорите что он изящен и безупречен
                    Я такого не говорю))

                    ps еще раз говорю, что не хотел бы чем то обидеть )
                    Я не обижаюсь. Давно. Меня достаёт то, что люди не читают документацию, вот и всё.

                    но в доках порой неочевидно написано
                    Сейчас уточню в доке, что objectsInScope отменяет center и zoom.
    Максим
    03 июля 2019, 08:59
    0
    Хотелось бы еще увидеть демо-сайт. В частности интересно посмотреть визуально как работает компонент с mFilter2.
    Ислам Алиев
    14 сентября 2019, 19:53
    0
    Доброго времени суток.
    Планирую приобрести данный компонент, но прежде мне нужно удостовериться в том что он соответствуем моим требованиям.

    Первый вопрос: Чем отличается параметр mode: default от mfilter2 помимо того что во втором используется платный компонент mSearch2?
    Второй вопрос: Присутствует ли возможность редактировать шаблон множественного балуна?
      Павел Гвоздь
      14 сентября 2019, 20:20
      0
      Второй вопрос: Присутствует ли возможность редактировать шаблон множественного балуна?
      Шаблоны балунов вообще не редактируются в компоненте.

      Первый вопрос: Чем отличается параметр mode: default от mfilter2 помимо того что во втором используется платный компонент mSearch2?
      Не понял вопроса.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    20