Mapex 1.0 - custom TV Яндекс.Карты
- 25.09.2012
- MODx, Mapex, Дополнение
Дополнение для MODX Revolution, добавляющее новый тип ввода TV параметров, позволяющий указать координаты точки на Яндекс.Картах.
Выпущена 2-ая версия компонента, они имеют различный функционал и несовместимы между собой.
Следить за развитием проекта вы можете по тегу Mapex.
После установки пакета Mapex 1.0 при создании TV-параметра можно указать новый тип ввода: "mapex.yandex". Этот тип ввода добавляет Яндекс.Карту на страницу редактирования ресурса:
Основные особенности:
- Указание точки путем перетаскивания ее мышкой.
- Быстрый поиск по адресу.
- Поддержка всех типов карты: Схема, Спутник, Гибрид, Народная карта.
- Работает на API Яндекс.Карты 2.0
Все данные сохраняются в виде JSON:
{"lat":54.182949,"lon":37.612339,"zoom":12,"type":"yandex#map"}
Инструкция по применению
Устанавливаем пакет. Установить можно, скачав пакет по ссылке. В настоящий момент в официальном репозитории MODX этого пакета нет.
Создаем новый TV параметр. Указываем ему тип ввода mapex.yandex, назначаем TV нужному шаблону.
Заполняем значение по умолчанию для TV. В поле "Значение по-умолчанию" можно написать JSON строку, аналогичную приведенной выше, что бы при создании нового ресурса карта сразу была открыта нужного типа и с нужными координатами. Документация доступна на сайте Яндекс.Карт http://api.yandex.ru/maps/doc/jsapi/2.x/dg/concepts/map.xml
Создаем ресурс, присваиваем ему наш шаблон, наслаждаемся!
Отображение карты на сайте
Читаем api.yandex.ru/maps/doc/jsapi/2.x/dg/concepts/load.xml о том, как подключить карты к сайту, смотрим примеры api.yandex.ru/maps/doc/jsapi/2.x/examples/ Для работы с JSON, в котором хранятся координаты, зум и тип карты, написан небольшой сниппет-фильтр mapexYandexFltr, который входит в пакет. Он умеет парсить JSON массив и возвращать нужное поле (здесь mapInfo — имя TV-параметра). Пример работы:
[[*mapInfo]] [[*mapInfo:mapexYandexFltr]] [[*mapInfo:mapexYandexFltr=`lat`]] [[*mapInfo:mapexYandexFltr=`lon`]] [[*mapInfo:mapexYandexFltr=`zoom`]] [[*mapInfo:mapexYandexFltr=`type`]]
Этот код выводит следующий результат:
{"lat":54.20288109538611,"lon":37.64632848434251,"zoom":15,"type":"yandex#satellite"} 54.202881095386,37.646328484343 54.202881095386 37.646328484343 15 yandex#satellite