В заметках на своем блоге я уже рассказывал Вам о плагине Яндекс.Карт для Joomla – смотрите «Плагин Яндекс.Карт для Joomla» и «Доработка плагина Яндекс.Карт для Joomla».
В двух заметках я продолжу тему, как можно доработать данный плагин.
Мы добавим две новые возможности – это форму поиска по карте и загрузку файлов в формате YMapsML.
Нам для работы будут необходимы два файла – это plugin_yandexmap.xml и plugin_yandexmap.php
Мы их будем продолжать редактировать.
Используя ftp-клиент мы заходим на сервер Вашего сайта в папку, где установлена Joomla.
Находим там папку plugins, а в ней папку content.
В этой папке находиться два файла: plugin_yandexmap.xml и plugin_yandexmap.php.
Добавим сначала строку поиска по карте.
25 июня 2009 года вышла новая версия API Яндекс.Карт 1.1.0
В этой версии появился новый элемент управления, размещаемый на карте, YMaps.SearchControl – поиск по карте.
Его мы и будим использовать.
Открываем сначала файл plugin_yandexmap.xml в любом текстовом редакторе или Блокноте.
Находим в нем следующие строки:
<param name="showMiniMap" type="radio" size= "1" default="0" label="YMAP_SHOWMINIM" description="YMAP_SHOWMINIM_D"> <option value="1">YMAP_YES</option> <option value="0">YMAP_NO</option> </param> |
Здесь прописываются элементы формы для добавления обзорной миникарты в режиме администрирования.
Joomla — Профессиональный сайт за один день |
И перед ними вставляем следующий код:
<param name="showSearchControl" type="radio" size= "1" default="0" label="YMAP_SHOWSEARCHCONTROL" description="YMAP_SHOWSEARCHCONTROL_D"> <option value="1">YMAP_YES</option> <option value="0">YMAP_NO</option> </param> |
Он служит для дополнения элементов формы добавления строки поиска в режиме администрирования.
Сохраняем измененный файл.
После этого открываем файл plugin_yandexmap.php.
С начала меняем версию API.
Для этого находим строку
$doc->addScript('http://api-maps.yandex.ru/1.0/index.xml?key='.$my_params['apiKey']); |
и изменяе значение версии с 1.0 на 1.1.
В результате
$doc->addScript('http://api-maps.yandex.ru/1.1/index.xml?key='.$my_params['apiKey']); |
Находим в нем строки
if (intval($my_params['showMiniMap'])) { $mmControl = 'var minimapControl = new YMaps.MiniMap();'; $mmControl .= 'map.addControl(minimapControl);'; } else { $mmControl = ''; } |
И передними добавляем следующий код:
if (intval($my_params['showSearchControl'])) { $searchControl = 'map.addControl(new YMaps.SearchControl(), new YMaps.ControlPosition(YMaps.ControlPosition.BOTTOM_LEFT, new YMaps.Size(5, 20)));'; } else { $searchControl = ''; } |
Еще ищем строку ‘.$mmControl.’ и перед ней добавляем строчку ‘.$searchControl.’
Сохраняем измененный файл.
Теперь необходимо зайти на сайт и на странице администрирования в менеджер плагинов и выбираем плагин Content — Yandex Maps.
Открываем его для редактирования.
В правой части окна, среди параметров должен появиться новый YMAP_SHOWSEARCHCONTROL и два переключателя состояния YMAP_YES и YMAP_NO.
Отмечаем состояние YMAP_YES и сохраняем изменения.
Открываем страницу с Яндекс.Картой. На карте должен появиться новый элемент управления YMaps.SearchControl.
Скачать измененные файлы: plugin_yandexmap.xml и plugin_yandexmap.php
В следующей заметке мы добавим возможность подгружать на карту файл в формате YMapsML.
Спасибо автору блога за доработку. Я делал почти так же, но не изменял версию API и по -этому не работало…
Данная поисковая система удобна, но есть один недостаток, например если задать в поиске «ул. Ленина д. 5» то найдётся очень много улиц из всех доступных населённых пунктов карт Яндекса. Хотелось бы увидеть решение, ограничивающее поис по одному городу. Возможно это не получится реализовать через showSearchControl, а вот если подключить Геокодер, то там такое возможно.
Пробовал сам подключить… форма поиска появляется, но не ищет. Функция showAddress не отдаёт значение 🙁