Новый YandexMaps v1.1.1

Обновление заказал Andmax.
В новом YandexMaps можно указать свой список полей для автоматической записи в них частей адреса (город, страна, район и т.д.) при выборе адреса в админке.
Также помимо списка полей используемых для записи частей адреса, есть поле, для записи полного адреса по указанной Вами маске.
В админке у нас теперь новый, приятный вид маркера, совсем такой-же, как на главной maps.yandex.ru. :) В следующей версии планирую реализовать такой параметр у сниппета, для вывода таких маркеров во фронтенде. Наработки уже имеются.



Ещё за счёт новых параметров у сниппета yandexMaps: "goToRes", "goToResBlank" и "goToJS", можно указать, осуществлять ли переход на страницу ресурса по клику на маркер, или нет. Помимо этого в третьем параметре можно указать простенький JS, который будет отрабатывать вместо перехода на страницу по клику на маркере. Ну, к примеру можно сделать так, чтобы страница ресурса открывалась в fancybox окне, указав в &goToJS при вызове сниппета:
$.fancybox({ type: 'ajax', href: '[[++site_url]]index.php?id=' + modx_id });Примечание: переменная modx_id обязательна, т.к. это id ресурса, который передаётся Яндекс.Картам, а они нам его возвращают. :)
Примечание 2: Если используете этот пример, то FancyBox на странице должен вызываться раньше сниппета YandexMaps!
Вот полный список изменений в новой версии:
1.1.1-beta
==============
— Поправлена запись района города
— В админку добавлен новый вид маркера, у некоторых старый не таскался за текстовую область. Да и новый приятнее на вид :)
— Исправлена ошибка, когда при перетаскивании метки в админке не прописывался адрес в поля
1.1.0-beta
==============
— В сниппет yandexMaps добавлен заведомо большой limit. Благодарю пользователя Konstantin за найденный баг и решение
— 3 новых параметра у сниппета yandexMaps: «goToRes», «goToResBlank» и «goToJS». Первый: переходить на страницу ресурса при клике на маркере. Второй: указывает, на этой странице или на новой. Третий: простенький JS код с использованием переменной modx_id в качестве id ресурса
— Параметр «showFilter» у сниппета yandexMaps, который включает/отключает вывод и рендер блока фильтрации объектов карты
— Параметр «checkZoomRange» у сниппета yandexMaps, который включает/отключает zoom карты так, чтобы были видны все имеющиеся на карте маркеры
— В сниппет добавлены параметры «showUnpublished», «showDeleted», «showHidden», «depth», которые используются в pdoTools
— В админке при вводе координат вручную в TV поле — на карте ставит туда маркер и центрует карту на маркере
— Добавлен параметр в TV поле «Необязательно». Теперь можно указать обязательность заполнения TV поля YandexMaps
— Добавлена настройка «Координаты центра карты в админке по-умолчанию»
— Добавлен параметр в TV поле «Координаты центра карты в админке по-умолчанию», который перебивает аналогичную настройку, если он установлен
— Добавлена настройка «Zoom для карты в админке»
— Добавлен параметр в TV поле «Zoom для карты в админке», который перебивает аналогичную настройку, если он установлен
— Добавлены настройки указания tv (или обычных) полей: страна, код страны, регион, округ, город, район, доп. район, улица, номер дома + литера, служебного помещения (названия залива, реки, моря, леса, парка, острова), тип адреса, полный адрес от Яндекс.Maps
— Добавлены настройки указания адреса в определённое поле по универсальной маске: «full_address» и «full_address_mask»
— Теперь при клике в админке по карте части адреса и сам адрес сформированный согласно маске записываются в поля указанные в настройках системы
— Внешняя форма поиска вместо встроенной searchControl. Подключённые к форме поиска suggestView (поисковые подсказки, как на Яндексе)
— При клике на подсказку сразу ищет нужные координаты по адресу и ставит туда маркер
— В админке пришлось отказаться от поиска при помощи geoCode и совместить внешнюю форму поиска с searchControl, т.к. geoCode выдавал немного неточные координаты объекта
— Изменён чанк tpl.yandexMaps, добавлены проверки на параметр «checkZoomRange», а также обработка события клика на маркере (параметры «goToRes», «goToResBlank» и «goToJS»)
P.S.: Документацию обновлю позже. Пока пользуйтесь описанием изменений в ченжлоге (вверху) или описанием в списке параметров сниппета и списке системных настроек.
P.P.S.: Если вы использовали предыдущую версию компонента, то при установке переименуйте чанк «tpl.yandexMaps», потому что в новой версии в него внесены изменения и он принудительно будет заменён.
P.P.P.S.: Компонент тестировался на 1к маркеров. Успешно справился с работой.
Скачать новую версию пока можно только из репозитория modstore.pro, в оф репе долгая модерация.
Старый топик дополнения на Modx.pro
Скачать дополнение YandexMaps в репозитории Modstore.pro
В официальном репозитории modx.com
Комментарии: 75
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
ПашокВ оф репозитории ещё около недели доступно не будет… :)
Пашокпри 10.0000 точках не заменимая штука
Пашокточки почему-то не скрываются через visible: false
вот кстати генератор точек по примеру яндекса
Пашокготовим пункты
собираем пункты в единое целое, т.е. массив $points можно собрать в разных местах при разных условиях
то, что выводим на экран
и для дива map_yandex надо ставить высоту. я это делаю так
ПашокТут собственно зачем они придумали ObjectManager habrahabr.ru/company/yandex/blog/243665/
в ней такое:
собственно как скрыть current none? ибо через visible: false и opacity: 0 не работает…
Можешь выложить скрин когда два ресурса с одинаковыми координатами и кликнуть на кластер этот из двух точек при максимальном приближении
ПашокПашокИли укажите в параметре "&styleMapBlock" фиксированную высоту. Для блока с картой и для блока с фильтром указана высота в процентах. Поэтому нужно указывать для них блок с фиксированной высотой.
Пример дерева ресурсов:
--Авто(1)
------Шиномонтаж(2)
----------Ресурс 1
----------Ресурс 2
----------Ресурс 3
------Автозапчасти(3)
----------Ресурс 1
----------Ресурс 2
Все нужные метки появляются, когда же я хочу убрать любую одну метку- исчезают все метки «culture» и при повторном нажатии не появлются… в чем может быть дело? Если создавать один субфильтр, например, ДК- все работает, не работает только при нескольких субфильтрах.
1) Спасибо за компонент (мне как НЕпрограммисту очень в помощь)
2) Помогите решить вопрос с зумом при отображении одиночного объекта.
Вроде все делаю по логике:
[[!yandexMaps?
&id=`[[*id]]`
&tvCoords=`coords`
&fieldForBalloonContent=`introtext`
&fieldForHint=`full-address`
&markerPreset=`islands#yellowStretchyIcon`
&markerPresetFieldText=`longtitle`
&styleMapBlock=`width:100%;height:300px;`
&showMoreLink=`1`
&zoom=`3`
]]
Но какой бы я зум не вписывал — все равно рисуется в максимальном зуме. Как побороть?
Как я понял, сниппет этот параметр пока не видит, однако, даже если править чанк «tpl.yandexMaps» и там прописать любой zoom, то ничего не происходит, хотя в коде страницы (скрипт карты) значение zoom меняется.
Подскажите где искать проблему?
то карта ломается полностью :)
Также не дает ничего удаление из чанка «tpl.yandexMaps»
как предлагалось тут — modx.pro/components/5033-yandexmaps-1-0-create-objects-from-resources-on-yandex-maps/#comment-39065
, выдает — «для этого участка местности нет данных… и т.д.»
Рубяты, выручайте, не знаю куда копать.
— v 1.1.1
Т.е. вне зависимости от значения zoom у меня карта для одного объекта приближена максимально близко (виден только дом), с такой же проблемой человек столкнулся ранее — modx.pro/components/5033-yandexmaps-1-0-create-objects-from-resources-on-yandex-maps/#comment-39051
и там предлагали отключить в шаблоне checkZoomRange
1) Как и советует автор удаляем из чанка 2 записи:
Удалить из чанка tpl.yandexMaps это:
geoObjects2.applyBoundsToMap(myMap[[+idMap]], {
checkZoomRange: true
}); Там 2 таких записи — обе удалить…
2) Есть еще одна запись, с проверкой, поэтому чтобы проверка НЕ сработала в вызове добавляем параметры:
&zoom=`15` (нужный нам зум)
&checkZoomRange=`false`
3) Осталась одна проблемка. Так как checkZoomRange выключен, а масштаб свободный — то карта центрируется не в том месте где надо.
У меня пока не удалось передать в скрипты правильный центр. Там (в чанке) написано:
var mapCenter[[+idMap]] = [[+centerCoords]],
По идее заменить на var mapCenter[[+idMap]] = [[+TVCoords]],
Но так не работает… :(
Оказалось довольно просто — нужно еще в вызове добавить параметр ¢erCoords=`[[*map]]`, где map — TV поле с координатами.
В общем рабочий вызов выглядит так:
Удалять в сниппете ничего не нужно.
Добавляем к вызову вот такую конструкцию (у меня тут еще и иконка своя подставляется) и всего делов
&objectsTypesJSON=`[
{
«Objects»: {
«parent»:«6»,
«icon»:«assets/img/map-ico.png»
}
}
]`
Заранее Спасибо.
Например указывать ТВ поля вместе с контентом, т.е. учавствовать в полном оформлении балуна?
например поле балуна:
В сниппете «yandexMaps» при изменении этого кода — на самой карте по прежнему ничего не меняется.
код вызова сниппета:
[[!yandexMaps?
&tvCoords=`longmap`
&styleMapBlock=`width:100%;height:400px;`
&zoom=`16`
&checkZoomRange=`0`
¢erCoords=`[[*longmap]]`
]]
Хотя в админке балун есть.
Такая проблема: вставляю карту для вывода дочерних ресурсов на карте:
Все выводится отлично, но в логах при каждом открытии страницы сыпятся ошибки.
Никто не сталкивался с таким?
В один прекрасный момент перестал искать координаты по адресу из TV с адресом объекта и не знаю, куда копать. Прошу помощи… Вот как вывожу в шаблоне:
Что можно сделать?
Павел, пофиксите пожалуйста некоторый недочет из за которого при совпадении двух точек с координатами выводится пустой список слева.
Как это сделать?
1. открыть сниппет yandexMaps
2. найти строку:
3. ниже под ней добавить строку:
4. найти строку:
5. ниже под ней добавить
на странице с картой выводится код
сайт/index.php?id= — как это исправить если на сайте ЧПУ и поисковик Гугл ругается на Ошибки URL
У меня на карте есть выполненные объекты, с фото и описанием, но есть и пять штук без фото и описания, тоесть создавать ресурс не имеет смысла, а вот метку на карте поставить можно. Не знаю как.
Кто нибудь решал такую задачку?
в поле adres, адрес указан вот в таком формате: Москва, Климентовский переулок, 6. В итоге карта и метка выводится где-то в океане, если указать впереди Россия, то тоже самое. Буду очень признателен за подсказку.
Щас попробую сам дописать снипет
В чанке tpl.yandexMaps меняет строку на (она в начале):
В сниппете yandexMaps добавляем
примерно на 55 строку:
В конце перед $tplParams = array добавляем:
и в сам массим $tplParams добавляем строчку:
Вызов сниппета заместо [[++cultureKey]] можно писать ru или en:
Делаю вызов
[[!yandexMaps?
&tvAddress=`adres`
&tvCoords=`coords`
&addressPrefix=`Украина, [[*cityfirm]], `
&zoom=`16`
&fieldForBalloonContent=`pagetitle`
&styleMapBlock=`width:100%;height:300px;`
&checkZoomRange=`0`
¢erCoords=`[[*coords]]`
]]
Выводит город и маркер в центре города для всех адресов. То есть город передается через [[*cityfirm]], а сам адрес нет.
У кого-нибудь работает &tvAddress? Что надо сделать? Как правильно вызывать?
Не знаю, связаны ли ошибки в консоли хрома с этим, но вот они:
Вот так вызываю сниппет:
Карта показывает нужную местность, но маркер не хочет ставить. Пробовал разные пресеты, и свою картинку тоже не подхватывает…
Почему же у меня не выводится, хоть тресни? Карта с правильными координатами выводится, а маркер (любой) не подтягивается…
«icon»:«assets/manager/images/ext_items/ттттттт.png»,
Видно прийдётся мне как-то самому подставлять карту на фронтенде…
Странно, что у меня не работает, а у всех работает.
Сайт на модхосте на протоколе https, может из-за этого иконка не подтягивается?
Как найти причину этого?
журнал ошибок модикса пуст
в консоли такие ошибки — не знаю связаны ли как то с этим
по умолчанию она помещается в квадрат и растягивается
mirjalusi.ru/o-kompanii/contacts
picplus.ru/img/1805/04/98a3b2c8.png
версия modx 2.6.1