Плагин Яндекс.Карты для Livestreet CMS
Приветствую всех!
UPD! В плагин добавлена поддержка карт Google.
Предлагаю вашему вниманию плагин Яндекс.Карт для Livestreet.
UPD Плагин бесплатно доступен в каталоге. Прошу тестировать и писать отзывы )
UPD2 Версия 0.1.1 Исправлена ошибка, возникающая при регистрации блока.
UPD3 Версия 0.1.2. Исправлена ошибка отображения картинки в балуне в Опере. Также включено по умолчанию отображение всех маркеров на карте и правильное добавление пункта меню. Новая версия скоро в каталоге или здесь.
Быстрый фикс:
в файле /plugins/ymap/templates/skin/default/actions/ActionBuildymap/buildmap.tpl
строка 32
заменить на
Из истории создания
Для одного из проектов городского портала возникла необходимость создать карту развлекательных заведений города. А т.к. один из разделов портала использовал Livestreet, то решил сделать карту на основе Яндекс.Карт (благо, нужный город там неплохо детализирован) в виде плагина.
Что же получилось? Где посмотреть демо?
А получилось вот что. Это городской портал города Сумы в Украине. Пока что не все категории карты успел заполнить, но того, что есть уже достаточно для понимания как работает плагин.
В дополнение, на моем сайте также можно увидеть плагин в действии, правда с меньшим количеством категорий. Впрочем, количество категорий значения не имеет.
Что умеет плагин?
Плагин умеет управлять маркерами и категориями маркеров на карте, выводить карту на определенную страницу, выводить меню категорий маркеров.
Что такое категория маркеров?
Категория маркеров это некоторое свойство маркера, в котором определяется как будет выглядеть иконка маркера на карте.
Свойства категории:
— Название — любое текстовое название. Например, Офисы компании;
— Имя стиля — требуется для генерации карты, набор символов на латинице. Например, offices.
— Ссылка на иконку маркеров в категории — иконка маркера, которая появляется на карте при выборе категории. Здесь удобно пользоваться стандартными иконками Яндекс.Карт.
Что такое маркер?
Это значек и балун на карте, который задается следующими свойствами:
Название, широта, долгота, категория, адрес, телефон, ссылка на подробную информацию и ссылка на изображение в балуне. Увидеть где и какие свойства проявляются достаточно просто — поиграйтесь с демками.
Как можно настроить карту?
Для карты можно задать API ключ Яндекс.Карт, ширину, высоту, координаты центра, начальное приближение, любые из стандартных инструментов управления на выбор, которые сейчас включены на демке, а также строку поиска по объектам на карте.
Как работает поиск?
Стандартный элемент управления поиска ищет адреса в видимой области карты, а если ничего не найдено, то везде.
Поиск объекта на карте ищет объекты (маркеры) по названию маркера. При клике на результат поиска, на карте открывается балун найденного маркера.
Поиск объекта на карте использует для предложения результатов плагин jQuery, однако подключать дополнительную библиотеку не требуется — jQuery подгружается вместе с Яндекс.Картами.
Админка карты.
Просто несколько скриншотов.
Таблица категорий маркеров
Список маркеров
Что касается совместимости, у меня версия 0.4.2, на других не тестировался.
Вот и все. Теперь хочу ваших отзывов и оценок :).Если будет спрос, добавлю в каталог. Плагин добавлен в каталог.
UPD! В плагин добавлена поддержка карт Google.
Предлагаю вашему вниманию плагин Яндекс.Карт для Livestreet.
UPD Плагин бесплатно доступен в каталоге. Прошу тестировать и писать отзывы )
UPD2 Версия 0.1.1 Исправлена ошибка, возникающая при регистрации блока.
UPD3 Версия 0.1.2. Исправлена ошибка отображения картинки в балуне в Опере. Также включено по умолчанию отображение всех маркеров на карте и правильное добавление пункта меню. Новая версия скоро в каталоге или здесь.
Быстрый фикс:
в файле /plugins/ymap/templates/skin/default/actions/ActionBuildymap/buildmap.tpl
строка 32
src="http://$[metaDataProperty.AnyMetaData.img]"
заменить на
src="http:$[metaDataProperty.AnyMetaData.img]"
Из истории создания
Для одного из проектов городского портала возникла необходимость создать карту развлекательных заведений города. А т.к. один из разделов портала использовал Livestreet, то решил сделать карту на основе Яндекс.Карт (благо, нужный город там неплохо детализирован) в виде плагина.
Что же получилось? Где посмотреть демо?
А получилось вот что. Это городской портал города Сумы в Украине. Пока что не все категории карты успел заполнить, но того, что есть уже достаточно для понимания как работает плагин.
В дополнение, на моем сайте также можно увидеть плагин в действии, правда с меньшим количеством категорий. Впрочем, количество категорий значения не имеет.
Что умеет плагин?
Плагин умеет управлять маркерами и категориями маркеров на карте, выводить карту на определенную страницу, выводить меню категорий маркеров.
Что такое категория маркеров?
Категория маркеров это некоторое свойство маркера, в котором определяется как будет выглядеть иконка маркера на карте.
Свойства категории:
— Название — любое текстовое название. Например, Офисы компании;
— Имя стиля — требуется для генерации карты, набор символов на латинице. Например, offices.
— Ссылка на иконку маркеров в категории — иконка маркера, которая появляется на карте при выборе категории. Здесь удобно пользоваться стандартными иконками Яндекс.Карт.
Что такое маркер?
Это значек и балун на карте, который задается следующими свойствами:
Название, широта, долгота, категория, адрес, телефон, ссылка на подробную информацию и ссылка на изображение в балуне. Увидеть где и какие свойства проявляются достаточно просто — поиграйтесь с демками.
Как можно настроить карту?
Для карты можно задать API ключ Яндекс.Карт, ширину, высоту, координаты центра, начальное приближение, любые из стандартных инструментов управления на выбор, которые сейчас включены на демке, а также строку поиска по объектам на карте.
Как работает поиск?
Стандартный элемент управления поиска ищет адреса в видимой области карты, а если ничего не найдено, то везде.
Поиск объекта на карте ищет объекты (маркеры) по названию маркера. При клике на результат поиска, на карте открывается балун найденного маркера.
Поиск объекта на карте использует для предложения результатов плагин jQuery, однако подключать дополнительную библиотеку не требуется — jQuery подгружается вместе с Яндекс.Картами.
Админка карты.
Просто несколько скриншотов.
Таблица категорий маркеров
Список маркеров
Что касается совместимости, у меня версия 0.4.2, на других не тестировался.
Вот и все. Теперь хочу ваших отзывов и оценок :).
169 комментариев
где скачать можно что бы поставить и потестить в РАБОТЕ
а так реклама сайта получилась и всё
вышлите в личку я протестирую тогда и скажу потом мнение
П.С. отлично получилось ;)
Плагин будет раздаваться бесплатно.
если не можете вышлите мне если не жалко на емаил 7278181@googlemail.com
я выложу и дам народу ссылку.
Почему-то у всех все работает (если все в порядке с руками)
Пример на демо сайте — ls4.ajaxy.ru/place/map (http://ls4.raki.aero/place/map)
Описание функционала: livestreet.ru/blog/4627.html
посмотрите что у вас там
ИМХО это бак, поправьте
по ссылке ls4.ajaxy.ru/place/map на странице кнопка «создать» на 404 ведет
почему неавторизованному она вообще показывается?
из-за ajaxy.ru не пускает и на ls4.ajaxy.ru, который на другом хостинге расположен, а из-за ls4.ajaxy.ru и на ls4.raki.aero, который я создал специально как алиас, а из-за этого и на raki.aero
какой-то кошмар. :(
Нет рейтинга мест, отзывов. Было бы это, можно было бы добавлять в каталог.
а не google мар
Fatal error: Class 'Plugin' not found in xxxxxx.ru/plugins/ymap/config/config.php on line 27
Ссылка на сам плагин в каталоге livestreetcms.com/addons/view/81/
выдает
Error: 404
Думаю лучше бы было в файлике main_menu.tpl написать вот так:
{if $unreadTopics}({$unreadTopics}) — это нужно убрать )
1. Добавление точки пользователем (форма). PHP.
2. Инструмент «Координаты» для определения юзером геогр.точек любого объекта. jQuery+API.
4. Определение геогр.адреса при вводе в строку. jQuery+API.
3. Сделал подсчет маркеров в категории. jQuery
Про все есть: хуки, методы, роутинг, а плагины — нэма
Собственно говоря пишу скрипты к LS для себя, а не для плагинов и продажи. А народ просил оформить в виде плагинов. Такие дела.
Ну а если выдает такую ошибку значит действительно неправильно введен ключ…
ключ получите здесь api.yandex.ru/maps/form.xml
Но в их API есть некоторые различия, поэтому когда будет готово не скажу.
Здесь GeoPoint(-77.116504,38.836901) — координаты центра города, 11 — высота над картой. Вот, посмотрите, что вышло у меня у меня
И не отображаются блоки справа, соответственно и маркеры тоже. В чём проблема?
кодировка должна быть UTF без Boom
Т.е. у Вас почему-то генерируется 4 пробела перед строкой <?xml version=«1.0», что есть неверно для синтаксиса xml.
Моя ошибка
Насчет не работает, напишите сюда или в личку Ваш ресурс, попробуем разобраться…
Иногда на локалхосте выскакивает ошибка «server responded 404» при YMapsML — тогда надо переносить на удален.сервер.
Первой должна идти Долгота, потом ниже Широта (как на Я.Картах при в инст-те «Получить информацию»).
Когда добавлял свои точки, не мог понять где они: вместо Ростова-на-Дону оказались в Азербайджане.
Спасибо за плагин.
Также, подскажите пожалуйста как в гугле брать точные координаты на здания? Пробовал из Google Earth но все равно точно не попадаю на нужный объект. Буду очень признателен.
К сожалению, политика провайдеров карт такова, что генерируемая карта должна быть доступна публично, в интернете.
На локалке тестировать не получится.
Что касается точных координат, попробуйте maps.google.ru/
Правой кнопкой на карте -> Что тут находится? — в строке запроса появляются точные координаты.
спасибо за труды
Вопрос: http://blog.mytaganrog.ru/map/ установилось все гладко. настроил первую запись, но не отображается на карте. где допустил ошибку?
Вы неправильно указали координаты.
Координаты:
Долгота: 39°42′45.42″ в. д. (39.712618)
Широта: 47°14′8.48″ с. ш. (47.235689)
Переделай везде, пожалуйста.
но все же)
поставил версию с яндексом
проблема: на карте отображается маркер последней добавленной категории, хотя в настройках маркера стоит другая категория
вопрос/пожелание: можно ли добавить в баллуне место и поле в настройках для описания объекта? Поясню, в одном здании может быть несколько магазинов и тд — торговый центр. Если писать в названии, то баллун получается длинным. Описание нужно для удобства поиска по конкретным запросам, да и просто, чтобы понять, что там находится.
вопрос/пожелание2: можно ли увеличить картинку в баллуне, на таком размере ничего не раглядишь. зачем тогда там фотка=(
Идеальный для меня вид — это такой, как у меня сделано на картах гугла — vidnoegorod.ru/page/karta/. Также там можно выставлять маркеры вручную, а не координатами, что, конечно, геморой, но для нужного функционала поиска, можно и потерпеть.
Именно в поиске вижу главный для себя смысл этой штуки, поэтому хотелось бы понять, будет ли и в какую сторону развитие.
Надеюсь, на разъяснение хотя бы по проблеме, про другое могу только мечтать+)
Траблы и пожелания записываются, не волнуйтесь :)
Что касается Вашей проблемы, тут я без непосредственно ресурса Вашего сказать затрудняюсь.
нужно поменять местами строки 55 и 57 а также удалить строку 65
Не знаю как решить проблему с огромным списком категорий. Какой-нибудь спойлер, но как разбить список на группы? И кстати как отсортировать группы, они ведь выводятся в той последовательности как их забивали?
Я так понимаю здесь задан шаблон элемента списка, а потом все существующие категории выводятся автоматом. Могу я убрать вставку автоматом и прописать вывод каждой категории вручную?
ресурс все тот же
вот так выглядит проблема vidnoegorod.ru/map/
но спасибо за скорый отклик
Надо для каждой категории в админке прописать стиль (типа «wifi»), иначе в генерируемом файле маркеров YMapsML (plugins\ymap\templates\skin\default\actions\ActionYmap\map.tpl, строка №12
)
стили одни и те же, а должны различаться. Я когда понял — прописал, все ок. См. на www.smsrostov.ru/map/
открываем файл /plugins/ymap/templates/skin/default/actions/ActionBuildymap/buildymap.tpl
и правим код таблицы после
на такой вариант
фак, парсер опять съел тэги <бр>, написал их выше русскими, не забудьте поменять
Результат можно посмотреть здесь vidnoegorod.ru/map/
Вопрос к знающим, чет у меня не получается.
Как сделать отступ справа от картинки для второго столбца, когда заголовок длинный.
Подскажите в чем может быть проблема?
При незаполненных категориях таже самая ошибка? Эта ошибка выскакивала прямо после установки плагина? Если да — переустанови плагин, если нет — вспомни точно какие ты действия производил, и после каких действий началась ошибка.
2. Добавили категории на карту. Та же ошибка.
Удалил плагин, залил заного, та же ошибка
Работающий пример есть на сайте www.smsrostov.ru/map/
Вообще, т.к. маркеры загружаются функцией var ml = new YMaps.YMapsML() api.yandex.ru/maps/jsapi/doc/dg/concepts/ymapsml.xml то при проходе в цикле всех групп YMaps.Group можно использовать методы групп api.yandex.ru/maps/jsapi/doc/ref/reference/ymapsml.xml внутри нашей функции function addMenuItem(group, map, menuContainer), куда и передается группа.
1. Возможность сортировки разделов.
2. Создать каталогизатор. Раздел / Подраздел. Шикарное решение для городских блогов.
3. Дополнить возможностью обычного пользователя устанавливать метки с предмодерацией. После которой админ решает публиковать, или нет метку. Существенно ускорит процесс заполнения карты.
Я сделал такое у себя — осталось прикрутить это в плагин.
[Thu Jan 27 16:17:32 2011] [error] [client 77.66.212.120] PHP Fatal error: Uncaught exception 'Exception' with message 'Can not find the template: actions/ActionYmap/pic.tpl' in /home/activetechru/data/www/smsrostov.ru/engine/modules/viewer/Viewer.class.php:301\nStack trace:\n#0 [internal function]: ModuleViewer->Display('actions/ActionY...')\n#1 /home/activetechru/data/www/smsrostov.ru/engine/classes/Engine.class.php(348): call_user_func_array(Array, Array)\n#2 /home/activetechru/data/www/smsrostov.ru/engine/classes/Router.class.php(360): Engine->_CallModule('Viewer_Display', Array)\n#3 /home/activetechru/data/www/smsrostov.ru/engine/classes/Router.class.php(70): Router->__call('Viewer_Display', Array)\n#4 /home/activetechru/data/www/smsrostov.ru/engine/classes/Router.class.php(70): Router->Viewer_Display('actions/ActionY...')\n#5 /home/activetechru/data/www/smsrostov.ru/index.php(34): Router->Exec()\n#6 {main}\n thrown in /home/activetechru/data/www/smsrostov.ru/engine/modules/viewer/Viewer.class.php on line 301, referer: www.smsrostov.ru/map/
Автор, откуда у тебя запрашивается шаблон actions/ActionYmap/pic.tpl?
При загрузке данных произошла ошибка: :3: parser error: XML declaration allowed only at the start of the document
<?xml version=«1.0» encoding=«utf-8»?>
^
Url: site.ru/buildmap/
Стиль для него прописан в \plugins\ymap\templates\skin\default\css\jsonSuggest.css, но там нет тех параметров, что выводятся в результат
Попробуй поменять css-стили в jsonSuggest.css.
Где-то я такую фишку на сайте знакомств видела, возможно на mamba…
Там есть алгоритм.
Это полезно для тех, кто, к примеру с планшета/смартфона без JS, заходит на сайт и хочет посмотреть вашу карту/маркеры.
По сути дела, это даже не доработка самого плагина: откуда брать xml-файл маркеров мы знаем, как его парсить знаем (библиотека class_xml.inc.php), функция xml2array отрабатывает на «Ура», в итоге два цикла и несколько обращений к массиву. Неудобно только, что надо для обращения к содержимому тегов составлять длинную адресацию, типа
Пример на www.smsrostov.ru/map/ — кнопка "Где я?". Испытайте сами, ибо у меня погрешность составляет порядка 200 м. Работает пока в Opera Mobile (Android), Opera 11, Chrome, FF, в IE какой-то баг.
Все делается через объект YMaps.location api.yandex.ru/maps/jsapi/doc/dg/concepts/geotargeting.xml и практически весь кусок кода взят из Клуба разрабов ymapsapi.ya.ru/replies.xml?item_no=23 Пример у них есть на api.yandex.ru/maps/tools/getlonglat/
Чтобы подключить все доп-е кнопки и слои, помимо того что есть в ориг.плагине, пришлось в шаблон плагина \plugins\ymap\templates\skin\default\actions\ActionYmap\map.tpl в конце добавить вызов своего js-скрипта:
Мой же script_ymaps.js имеет примерно такой вид:
Со слов "// Реализует наследование прототипа без исполнения конструктора родителя" идет кусок кода из примера ymaps.narod2.ru/examples/geolocationapi.html.
На планшетниках и смартфонах вылез баг маленького экрана Я.Карт: мои доп-е кнопки залезали под строку поиска объектов. Пришлось в шаблоне плагина \plugins\ymap\templates\skin\default\actions\ActionYmap\map.tpl ее переместить в нижний левый угол и сделать минимальной длины в 200px:
Была еще идея сразу при открытии страницы запрашивать местоположение посетителя, но от нее пока отказался, ибо у многих неопытных пользователей вызывает ступор: либо браузер выдает предупреждение, которого они ни разу не видели и не знают что делать, либо они сразу пугаются такого предупреждения.
Насчет разработки под тебя: я пишу чисто для себя на PHP, мануалы по плагинам LS, не читал из-за ненадобности. Под твои задачи могу писать — давай перенесем обсуждение в личку.
Выполнено на уровне SQL-запроса в plugins\ymap\classes\modules\ymap\mapper\Ymap.mapper.class.php:
В стр. №69 добавил условие в sql-запрос:
Результат: на www.smsrostov.ru/map/
Вот к примеру, Батайск с улицами. Прекрасно? Удобно? Даааа.
К сожалению, у Я. непростая защита, и прямой вызов флеша для панорам типа maps.yandex.ru/resources/streetview/2.x/sv-player10.swf?2.5.4&l=stv&ol=stv&oll=39.719645,47.229456&source=wizgeo ничего не дает :(
Может кто-то уже Я.панорамы вставлял в какой-нить сайт, подскажите как?
Пример, снова есть на www.smsrostov.ru/map/ на любой метке.