Доработка компонента Яндекс.Карт для Joomla 1.5 – подключение народной карты

На страницах своего блога «Занимательная веб-картография» я уже писал о компоненте для размещения Яндекс.Карт с использованием системы управления сайтом Joomla 1.5 «Компонент яндекс карт для Joomla 1.5».

В этой заметке я хочу рассказать о том, как можно данный компонент доработать, для использования Народной карты.

Скачать последнюю версию компонента можно отсюда

Первым делом нам надо подключить модуль API для работы с Народной картой.

Сделать это можно изменив запись ключа доступа к API Яндекс.Карт для Вашего сайта.

В панели управления компонентом необходимо нажать на кнопку Настройки, появится окно для ввода параметров

и сразу после ключа дописать через символ & строку modules=pmap.

Поясню на примере, у вас в поле «Yandex Maps API ключ» был ключ AJUUCU0BAAAAQVYRHAIAfAr-Yaqt5nsmIh6pdk-pjsdkESsAAAAAAAAAAADBa2Zj2yRPpn55P2bAHXh6J0zgGw==

Вы изменяете его вид на следующий: AJUUCU0BAAAAQVYRHAIAfAr-Yaqt5nsmIh6pdk-pjsdkESsAAAAAAAAAAADBa2Zj2yRPpn55P2bAHXh6J0zgGw==&modules=pmap

Теперь надо дать возможность пользователю выбрать соответствующие типы отображения для Народной карты: НК-схема (YMaps.MapType.PMAP) и НК-гибрид (Ymaps.MapType.PHYBRID).

Для этого необходимо исправить содержимое двух файлов компонента.

Файл form.php, который находится по адресу: <папка установки Joomla>/administrator/components/com_yandexmaps/views/yandexmapsmap/tmpl/.

Открываем его в текстовом редакторе и находим в нем строку:

$option = array(0 => 'None', 1 => 'Default Map Types', 2 => 'Normal Map', 3 => 'Satellite Map', 4 => 'Hybrid Map', 5 => 'Physical Map', 7 => 'Default Map Types (Satellite Map)', 8 => 'Default Map Types (Hybrid Map)', 9 => 'Default Map Types (Physical Map)');

В этой строке определяются переменные для выбора типа отображения карты и элемента управления для переключения типа карты.

Дописываем через запятую еще два элемента массива 10 => ‘YMaps.MapType.PMAP’, 11 => ‘Ymaps.MapType.PHYBRID’.

В результате стока должна иметь вид:

$option = array(0 => 'None', 1 => 'Default Map Types', 2 => 'Normal Map', 3 => 'Satellite Map', 4 => 'Hybrid Map', 5 => 'Physical Map', 7 => 'Default Map Types (Satellite Map)', 8 => 'Default Map Types (Hybrid Map)', 9 => 'Default Map Types (Physical Map)', 10 => 'YMaps.MapType.PMAP', 11 => 'YMaps.MapType.PHYBRID');

Сохраняем изменения в файле form.php

Открываем файл default.php, расположенный по адресу <папка установки Joomla>/components/com_yandexmaps/views/map/tmpl/

И в нем находим строчки:

case 9:
	$scriptheader .= 'map.addControl(new YMaps.TypeControl());' ."n";
	$scriptheader .= 'map.setType(YMaps.MapType.MAP);' ."n";
break;

После них добавляем следующий код:

case 10:
	$scriptheader .= 'map.addControl(new YMaps.TypeControl([YMaps.MapType.PMAP, YMaps.MapType.PHYBRID]));' ."n";
    $scriptheader .= 'map.setType(YMaps.MapType.PMAP);' ."n";
break;
case 11:
	$scriptheader .= 'map.addControl(new YMaps.TypeControl([YMaps.MapType.PMAP, YMaps.MapType.PHYBRID]));' ."n";
	$scriptheader .= 'map.setType(YMaps.MapType.PHYBRID);' ."n";
break;

Сохраняем измененный файл default.php

Теперь при установке параметров карты в режиме администрирования в поле Тип контроля мы можем выбрать соответствующие типы для Народной карты (Ymaps.MapType.PMAP — Народная карта схема и Ymaps.MapType.PHYBRID — Народная карта гибрид), а при отображении Народной карты мы сможем переключаться между ее типами.

Задаем для нашей карты необходимые параметры, тип контроля Ymaps.MapType.PMAP, сохраняем и создаем ссылку в меню на нашу карту.

Загружаем страницу в браузере и наблюдаем

Тоже но в гибридном режиме

Еще было бы хорошо организовать поиск по Народной карте с использованием элемента управления Поиск по карте.

Для этого нам также будет необходимо изменить ранее исправленные файлы form.php и default.php.

В файле form.php находим строчку echo YandexMapsRender::renderFormSelectBox(‘border’, ‘Search Maps’, », $this->item->border, $option, 1); и пред ней изменяем вид строки

$option = array(0 => ‘No’, 1 => ‘Yes’);

на

$option = array(0 => ‘No’, 1 => ‘Yes’, 2 => ‘НК’);

Сохраняем файл form.php в кодировке UTF-8.

А в файле default.php ищем следующий фрагмент кода:

//поиск
if (isset($this->map->border) && (int)$this->map->border == 1) {
	$scriptheader .= 'map.addControl(new YMaps.SearchControl());' ."n";
}

После него добавляем код:

//поиск по Народной карте
if (isset($this->map->border) && (int)$this->map->border == 2) {
	$scriptheader .= 'map.addControl(new YMaps.SearchControl({geocodeOptions: {geocodeProvider: "yandex#pmap", boundedBy : nnovgorodBounds, strictBounds : true}}));' ."n";
}

Здесь прошу обратить Ваше внимание на параметры boundedBy : nnovgorodBounds, strictBounds : true

Они определяют возможность ограничения области поиска на Народной карте, сама область поиска задается дополнительным кодом, который вставляется после строки

//$scriptheader .= ‘ map.addControl(new YMaps.TypeControl());’ ."n";

Добавленный код:

// Прямоугольная область для Нижнего Новгорода
$scriptheader .= 'var nnovgorodBounds = new YMaps.GeoBounds(' ."n";
$scriptheader .= 'new YMaps.GeoPoint(43.77352,56.198029), ' ."n";
$scriptheader .= 'new YMaps.GeoPoint(44.119589,56.372946));' ."n";

Если Вы не хотите ограничивать область поиска, тогда код для поиска по Народной карте будет иметь вид:

//поиск по Народной карте
if (isset($this->map->border) && (int)$this->map->border == 2) {
	$scriptheader .= 'map.addControl(new YMaps.SearchControl({geocodeOptions: {geocodeProvider: "yandex#pmap"}}));' ."n";
}

Теперь если при установке параметров карты выбрать Поиск адреса НК, то мы сможем икать объекты на Народной карте.

Пример работы поиск на рис.

Скачать измененные файлы form.php и default.php

  • Гость: если размещать ссылку на карту элемент меню, то все нормально, отображается народная карта, переключатели схема и гибрид доступны если же использовать код плагина, то увы {yandexmaps view=map|id=1} народная карта не подключается, несмотря на настройки "карты" кнопки схема и гибрид невидны возможно нужны другие параметры для плагина? подскажите пожалуйста
  • Гость: Нужно также поправить код плагина yandexmaps.php в /plugins/content/ . Планирую написать об этом подробнее в отдельной заметке.
  • Гость: я так и понял, что код плагина не заточен много там переделывать? в любом случае, будем ждать и надеяться на решение так как для нашего города нет никаких карт, кроме народной карты Яндекс
  • Гость: мне кажется какой-то косяк с обработкой народной карты т.е. при установки масштаба увеличения в компоненте у карты, полного увеличения – до уровня домов не происходит, несмотря на изменения цифр, также остается где-то на среднем уровне хотя на шкале еще есть несколько пунктов для увеличения
  • Гость: Блин. Такой облом. Я уж думал всё работает. Всё делал как написано. Надо чаще коменты читать. Может кто знает где такое работает. Кинте ссылку здесь. Или может админ доработает плагин. Вот облом то. Ладно, хоть кто то делает что нибудь по этому компоненту. Автор компонента вобще денег чтоли ждёт? Не уж то на Руси совсем добрые люди повывелись блин, вот обломался :(
  • Гость: Это снова я, оказывается есть продолжение Доработка компонента Яндекс.Карт для Joomla 1.5 – подключение народной карты. Продолжение. (1) Только, осталось решить вопрос с маштабом карты. Не реагирует на настройку увеличения масштаба. Увеличивается только до определёного масштаба. Админ БЛАГОДАРЮ!!! :)
  • Гость: ПРО МАСШТАБ Масштаб ориентируется на СХЕМУ карты. Тоесть если СХЕМА имеет максимум увеличение до 14, то она автоматически будет скидываться до этого значения. Даже если СПУТНИК имеет масштаб 18. Тоесть вопрос в том, как сделать так чтоб масштаб ориентировался на СПУТНИК, а не на СХЕМУ. В Народной карте, при вставке через код, ведь всё нормально работает.
  • Гость: Не получается отобразить народную карту. Только гибрид доступен или спутник. Народной нет в списке . все делал по вашей инструкции.
  • Гость: Автору огромное спасибо. Вы бы здесь опубликовали номер расчетного счета или номер вебмани кошелька. Хоть чуть-чуть Вас отблагодарить через банк или же автомат :). Процветания Вам. Р.С.: Добавляю в закладки
  • Гость: Поддержать проект Вы можете перечислив любую сумму на следующие счета: В системе WebMoney на кошельки: E134683795030 R142686393570 U150121076606 Z245735187373 В системе Яндекс.Деньги 4100169037173 В системе RBK Money RU76855287
  • Гость: 1) При установке своих меток показывается не Народная карта, а обычная, что неудобно. 2) Обычно, при просмотре Народной карты есть доступ к просмотру деталей нанесенных на карту объектов. А при вставке Народной карты компонентом такой просмотр деталей отсутствует. Просматриваются только установленные маркеры.
  • Гость: С метками это я не досмотрел, нужно посмотреть и исправить. Просмотр деталей объектов для Народной карты вставленной при помощи модуля не доступен. Доступен только поиск по объектам
  • Гость: Ребят, у кого значение zoom не ставится выше 14, попробуйте сделать так. В файле /components/com_yandexmaps/views/map/tmpl/default.php Найдите строчку: $scriptheader .= ' map.setCenter(new YMaps.GeoPoint( '.$this-&gt;map-&gt;longitude.', ' .$this-&gt;map-&gt;latitude.'), '.$this-&gt;map-&gt;zoom.');' ."n"; и замените её на $scriptheader .= ' map.setCenter(new YMaps.GeoPoint( '.$this-&gt;map-&gt;longitude.', ' .$this-&gt;map-&gt;latitude.'), '.$this-&gt;map-&gt;zoom.', '.'YMaps.MapType.PMAP'.');' ."n";
  • Гость: Большое спасибо автору за информацию!!!
  • Гость: Подскажите, есть ли какая-нибудь возможность просмотра деталей объектов при наведении курсора на народной карте посетителям сайта?
  • Гость: Пока такой возможности нет
  • Гость: Есть ли возможность добавить дополнительные иконки маркера?
  • Гость: На карту можно добавить свои метки средствами API Яндекс.Карт
  • Гость: Спасибо, с метками разобрался! Теперь настраиваю область поиска по карте. Но после того как выбираю в установке параметров карты - Поиск адреса: НК, окно с картой на странице вообще перестают отображаться. В чем может быть дело и как это исправить?
  • Гость: уважаемый admin )) очень интерферирует внедрение народной карты в com_easyblog v.3
  • Гость: Здравствуйте, вроде сделал вск, как Вы описываете, но не выводится народная карта и не появляются соответствующие кнопки. Ссылка с пункта меню на карту компонента, через вывод в статью - тоже самое.