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

Автор: | 06.02.2011

На страницах своего блога «Занимательная веб-картография» я уже писал о компоненте для размещения Яндекс.Карт с использованием системы управления сайтом 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

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

  1. aleks

    если размещать ссылку на карту элемент меню, то все нормально, отображается народная карта, переключатели схема и гибрид доступны

    если же использовать код плагина, то увы
    {yandexmaps view=map|id=1}

    народная карта не подключается, несмотря на настройки «карты»
    кнопки схема и гибрид невидны

    возможно нужны другие параметры для плагина? подскажите пожалуйста

    1. admin Автор записи

      Нужно также поправить код плагина yandexmaps.php в /plugins/content/ . Планирую написать об этом подробнее в отдельной заметке.

  2. aleks

    я так и понял, что код плагина не заточен
    много там переделывать?

    в любом случае, будем ждать и надеяться на решение

    так как для нашего города нет никаких карт, кроме народной карты Яндекс

  3. aleks

    мне кажется какой-то косяк с обработкой народной карты
    т.е. при установки масштаба увеличения в компоненте у карты, полного увеличения – до уровня домов не происходит, несмотря на изменения цифр, также остается где-то на среднем уровне

    хотя на шкале еще есть несколько пунктов для увеличения

  4. sava

    Блин. Такой облом. Я уж думал всё работает. Всё делал как написано. Надо чаще коменты читать.
    Может кто знает где такое работает. Кинте ссылку здесь.
    Или может админ доработает плагин.
    Вот облом то.
    Ладно, хоть кто то делает что нибудь по этому компоненту. Автор компонента вобще денег чтоли ждёт?
    Не уж то на Руси совсем добрые люди повывелись

    блин, вот обломался 🙁

  5. sava

    Это снова я, оказывается есть продолжение

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

    Только, осталось решить вопрос с маштабом карты. Не реагирует на настройку увеличения масштаба. Увеличивается только до определёного масштаба.

    Админ БЛАГОДАРЮ!!! 🙂

  6. sava

    ПРО МАСШТАБ

    Масштаб ориентируется на СХЕМУ карты. Тоесть если СХЕМА имеет максимум увеличение до 14, то она автоматически будет скидываться до этого значения. Даже если СПУТНИК имеет масштаб 18. Тоесть вопрос в том, как сделать так чтоб масштаб ориентировался на СПУТНИК, а не на СХЕМУ.

    В Народной карте, при вставке через код, ведь всё нормально работает.

  7. Иван

    Не получается отобразить народную карту. Только гибрид доступен или спутник. Народной нет в списке . все делал по вашей инструкции.

  8. Виталий

    Автору огромное спасибо. Вы бы здесь опубликовали номер расчетного счета или номер вебмани кошелька. Хоть чуть-чуть Вас отблагодарить через банк или же автомат :). Процветания Вам.

    Р.С.: Добавляю в закладки

    1. admin Автор записи

      Поддержать проект Вы можете перечислив любую сумму на следующие счета:
      В системе WebMoney на кошельки:
      E134683795030
      R142686393570
      U150121076606
      Z245735187373
      В системе Яндекс.Деньги 4100169037173
      В системе RBK Money RU76855287

  9. Oleg

    1) При установке своих меток показывается не Народная карта, а обычная, что неудобно.
    2) Обычно, при просмотре Народной карты есть доступ к просмотру деталей нанесенных на карту объектов. А при вставке Народной карты компонентом такой просмотр деталей отсутствует. Просматриваются только установленные маркеры.

    1. admin Автор записи

      С метками это я не досмотрел, нужно посмотреть и исправить.
      Просмотр деталей объектов для Народной карты вставленной при помощи модуля не доступен.
      Доступен только поиск по объектам

  10. Thirdian

    Ребят, у кого значение zoom не ставится выше 14, попробуйте сделать так.

    В файле /components/com_yandexmaps/views/map/tmpl/default.php

    Найдите строчку:
    $scriptheader .= ‘ map.setCenter(new YMaps.GeoPoint( ‘.$this->map->longitude.’, ‘ .$this->map->latitude.’), ‘.$this->map->zoom.’);’ .»n»;

    и замените её на
    $scriptheader .= ‘ map.setCenter(new YMaps.GeoPoint( ‘.$this->map->longitude.’, ‘ .$this->map->latitude.’), ‘.$this->map->zoom.’, ‘.’YMaps.MapType.PMAP’.’);’ .»n»;

  11. Алексей

    Подскажите, есть ли какая-нибудь возможность просмотра деталей объектов при наведении курсора на народной карте посетителям сайта?

  12. Алексей

    Есть ли возможность добавить дополнительные иконки маркера?

    1. admin Автор записи

      На карту можно добавить свои метки средствами API Яндекс.Карт

  13. Алексей

    Спасибо, с метками разобрался!
    Теперь настраиваю область поиска по карте. Но после того как выбираю в установке параметров карты — Поиск адреса: НК, окно с картой на странице вообще перестают отображаться. В чем может быть дело и как это исправить?

  14. Baza

    уважаемый admin ))
    очень интерферирует внедрение народной карты в com_easyblog v.3

  15. Евгений

    Здравствуйте, вроде сделал вск, как Вы описываете, но не выводится народная карта и не появляются соответствующие кнопки. Ссылка с пункта меню на карту компонента, через вывод в статью — тоже самое.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *