На блоге я уже рассказывал о том, как можно доработать компонент для размещения Яндекс.Карт с использованием системы управления сайтом Joomla 1.5 , смотри заметки: «Доработка компонента Яндекс.Карт для Joomla 1.5 – подключение народной карты» и «Доработка компонента Яндекс.Карт для Joomla 1.5 – подключение народной карты. Продолжение», но остался не рассмотренным еще один вопрос.
При установке своих меток, в режиме управления компонентом, есть возможность указания их размещения на карте и использования геокодирования, но в данном режиме показывается обычная Яндекс.Карта, а удобнее было это делать сразу на Народной карте.
Что необходимо изменить в компоненте для реализации этой возможности.
Для этого необходимо отредактировать код файла default.php, который расположен в папке по адресу:
(папка установки Joomla)/
/administrator/components/com_yandexmaps/views/yandexmapsgmap/tmpl/default.php.
В начале мы изменяем строку подключения API Яндекс.Карт
$scriptLink = ‘http://api-maps.yandex.ru/1.0/index.xml?key=’. $this->apikey;
на следующую
$scriptLink = ‘http://api-maps.yandex.ru/1.1/index.xml?key=’. $this->apikey.’&modules=pmap’;
Здесь, мы подключаем версию API 1.1 (т. к. весия 1.0 является устаревшей и не поддерживает возможность подключения модулей), а после ключа дописываем параметр для подключения модуля Народной карты.
После этого, сразу ниже строки добавления элемента управления типом карты
map.addControl(new YMaps.TypeControl());
Мы устанавливаем тип карты Народная карта-схема (YMaps.MapType.PMAP ) дописав новую строку
map.setType(YMaps.MapType.PMAP);
Если Вам необходима возможность переключения типа Народной карты, то строку
map.addControl(new Ymaps.TypeControl());
надо переписать в виде
map.addControl(new YMaps.TypeControl([YMaps.MapType.PMAP, YMaps.MapType.PHYBRID]));
И последнее, что нам необходимо исправить — это реализовать поиск по Народной карте для геокодирования.
Для этого нам необходимо изменить строку
var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});
на следующую
var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds(), geocodeProvider:"yandex#pmap"});
Здесь мы обращаться к другому поисковому сервису — yandex#pmap (а не yandex#map, который используется по умолчанию).
Сохраняем изменения и переходим в режим администрирования Joomla.
Там в меню Компоненты находим подменю Яндекс Карты, а далее пункт меню Маркеры.
На открывшейся странице нажимаем кнопку «Новый» (для создания нового маркера), а в новом окне нажимаем на кнопку «Установить координаты», наблюдаем Народную Карту, на которой в нужном нам месте мы можем разместить маркер, координаты которого передадутся в соответствующие поля формы.
Для размещения маркера можно использовать мышь для перетаскивания значка, а также колесико мыши для масштабирования или воспользоваться геокодером, введя в поле поиска необходимый адрес и нажав на кнопку «Получить маршрут».
Здорово! Теперь осталось только научить этот компонент показывать массив gps-координат, то есть трек и он закроет собой просто огромную область применения. Можно доработать этот компонет, чтобы была возможность при выборе метки указывать координаты или одной точки или рисовать полилинию по нескольким точкам сразу, указанных в виде массива?
Спасибо за статью!
Вопрос, возможно ли скрыть имеющиеся на карте метки?
В настройках компонента не нашел, может как ручками?
Пока средствами API это не возможно.
Здравствуйте!
Во-первых, спасибо за ваши статьи!
А во-вторых, возникла проблема! Тут обнаружил что Народная карта работает только в Mozzila Firefox, а к примеру в Chrome нет (там подхватывается обычная, а как следствие, при настроенном приближении видим «Для этого участка местности нет данных…»).
Раньше всё вроде было норм. Подскажите, пожалуйста, в чем может быть проблема, так как однажды настроев компонент, больше не следил за какими либо изменениями. Возможно это уже не актуально.