Для системы управления сайтом Joomla существует компонент бизнес-каталога SOBI2, в котором для показа месторасположения организации используются карты Google Maps.
Проблема в том, что мало городов России и Украины представлены на картах Google с детализацией до дома. И хотелось бы иметь возможность использовать Яндекс.Карты в место Google Maps.
Как это легко сделать я покажу Вам в этой заметке.
И так в начале, Вы должны скачать компонент и установить его на своем сайте, если он не был установлен.
На момент написания статьи доступна версия SOBI2 RC2.9.2.2 и загрузить ее можно по адресу http://www.sigsiu.net/download/components/sigsiu_online_business_index_2.html
Устанавливаем компонент и создаем необходимые категории и записи.
API используемые в Google Maps и Яндекс.Картах похожи и нам для перехода от использования одного к другому необходимо будет исправить всего два файла (можно ограничиться одним).
Для использования карт Google в праметрах отображения компонента SOBI2 существует вкладка Google Maps.
В режиме администрирования системы нужно выбрать компонент Sigsiu Online Business Index 2
На открывшейся странице в левой колонке выбрать ссылку Параметры (), а затем Параметры отображения ().
На странице выбрать вкладку Google Maps.
Мы увидим форму следующего содержания (если у Вас компонент русифицирован):
Здесь в принципе все понятно без пояснений.
Единственное, что для использования Яндекс.Карт необходимо в поле API ключ ввести соответственно ключ к API Яндекс.Карт для вашего домена.
И поменять местами поля для хранения значений широты и долготы карты.
Тип поля – Скрытое.
Первое значение – долгота (Longitude) поле filds_latmap и второе – широта (Latitude) поле filds_lonmap.
Если Вы хотите поменять текстовое описание в форме, то это можно сделав отредактировав следующие файлы:
— для русифицированной версии файл admin.russian.php, расположенный по адресу Папка сайта/ administrator/components/com_sobi2/languages/
— для английской версии файл admin.english.php, расположенный там же.
Нужно поиском найти текст, который необходимо заменить и ввести новый.
Теперь переходим к главному этапу.
В папке установки вашего сайта находим каталог по адресу /components/com_sobi2/includes/ нужно найти файл entry.functions.php.
Его мы будем изменять.
Открываем его для редактирования.
Находим в нем функцию showGoogleMaps, самая последняя в файле.
Она отвечает за вывод карты при просмотре полного описания информации о компании, если введены координаты центра в соответствующие поля (filds_latmap и filds_lonmap).
И заменяем весь код в функции между строчками
function showGoogleMaps($mySobi, $config) { |
и
} function waySearchUrl( $waySearchLink ) |
На новый код:
if( !$config->useGoogleMaps || !isset( $config->googleMapsApiKey ) ) { return null; } $map_url = "http://api-maps.yandex.ru"; $map_api_version = "1.0"; $title = $config->jsAddSlashes( $mySobi->title ); $GeoPos = $config->getGeoPosition( $mySobi->id ); if( $GeoPos['lat'] && $GeoPos['long'] && is_numeric( $GeoPos['lat'] ) && is_numeric( $GeoPos['lat'] ) ) { ?> <script src="<?php echo $map_url?>/<?php echo $map_api_version?>/?key=<?php echo $config->googleMapsApiKey ?>" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ window.onload = function init () { var map = new YMaps.Map(document.getElementById("YMapsID")); map.setCenter(new YMaps.GeoPoint(<?php echo $GeoPos['lat']; ?>, <?php echo $GeoPos['long']; ?>), <?php echo $config->googleMapsZoom; ?>); var placemark=new YMaps.Placemark(new YMaps.GeoPoint(<?php echo $GeoPos['lat']; ?>, <?php echo $GeoPos['long']; ?>)); map.addOverlay(placemark); placemark.openBalloon('<div style="text-align:center; width: 200px; "><strong><?php echo $title; ?></strong></div>'); map.addControl(new YMaps.SmallZoom()); }; //]]> </script> <div style="width: <?php echo $config->googleMapsWidth; ?>px; height: <?php echo $config->googleMapsHeight; ?>px;" id="YMapsID"></div> <?php } elseif ( ( strlen( trim($GeoPos['lat'] ) ) && strlen( trim( $GeoPos['long'] ) ) ) && !is_numeric( $GeoPos['lat'] ) || !is_numeric( $GeoPos['lat'] ) ) { trigger_error("HTML_SOBI::showGoogleMaps(): Given cooordinates ({$GeoPos['lat']}, {$GeoPos['long']}) are not correct. Please enter float values"); } } |
Сохраняем измененный файл.
Задаем значение полей долготы и широты для какой либо организации и наблюдаем результат:
А как ты ставил сам SOBI2
во всех мануалах советуют не использовать FTP мод.
А как же иначе его засетапить?
Я с начала конфигурировал каталог SOBI2 и наполнял данными на локальной машине. Затем на сервере установил компонент SOBI2 стандартным образом в Joomle. После этого с использованием PhpMyAdmin обновил содержание таблиц категорий и данные полей.
Спасибо за статью! все работает, кроме одного момента… по аналогии с SOBI2+GoogleMaps, хотелось бы, чтобы при размещении пользователем информации в каталоге, он мог указать на Яндекс.карте место, получив в поля input field_latmap и field_lonmap координаты точки. Будет ли продолжение статьи SOBI2 + Яндукс.Карты?
Еще раз Большое спасибо за эту статью!
Просьба выложить или прислать на мыло весь отредактированый файл, тк мешают кривые ручки или что-то еще (Предупреждение Этот шаблон включает в себя несколько JavaScripts, которые могут конфликтовать с MooTools библиотеки. SOBI2 поиска функция может не работать должным образом.: mootools)вываливается на стадии входа в каталог
Выложил исправленный файл entry.functions.php Загрузить его можно по ссылке http://webmap-blog.ru/files/entry.functions.txt. После загрузки замените расширение файла на php
Спасибо будем пробовать!
Для любителей sobi2 могу предложить услугу тематического наполнения вашего sobi2-каталога — получите ТЫСЯЧИ СТРАНИЦ легко! Детали предложения тут http://grabilka.ru/integrator/sobi2-joomla
а как сделать захват геокоординат как реализовано здесь
http://www.sigsiu.net/faq/how_to_fetch_geo_coordinates_in_add_edit_entry_form_by_map.html
Здравствуйте! А возможно сделать так, чтобы координаты автоматически определялись по адресу?
И как сделать так, чтобы карта была внизу, сейчас она у меня выводится вверху
Здравствуйте!
подскажите пожалуйста
как сделать так, чтобы карта была внизу, сейчас она у меня выводится вверху
icq 589-119-638
Ответ есть в заметке по адресу http://webmap-blog.ru/?p=473
Нужно изменить файл sobi2.details.tmpl.php
а не подскажите вот этот плагин для ads manager можно в нем заменить гугл карты на яндекс http://narod.ru/disk/18485836000/gmap.zip.html
Да, возможно. Нужно поправить функции осуществляющие вывод карты: getFormDisplay, getDetailsDisplay
После вышеописанных манипуляций на странице с картой появляется сообщение «Невозможно использовать ключ Google Api для этого сайта». В чем может быть дело? PHP файл подправил и ключ яндекса вбил.
А можете написать как сделать чтобы яндекс карты были в adsmanager???? интересует что куда вставить. Помогите ооочень надо
Можно ли сделать не стандартную, а народную карту?
Нужно сделать два действия:
1. Добавить подключение модуля Народной карты к ключу API.
2. Добавить необходимый тип для Народной карты (Схема или Гибрид).
Если необходимо напишу заметку по этому вопросу.
Можно сделать карту или добавление координат (с добавлением ссылки на карту) в виртумарте?
Думаю это многих заинтересует..
Спасибо за инструкцию — очень полезная штука, но у меня почему-то не получилось.
сделал все как описано выше, после замены
разделы соби на жумле вообще не загружаются, в исходном коде страницы только это
«
аЅаАб�б�аКаОаВ
»
и все, т.е. белый экран и надпись в непонятной кодировке.
Соби — 2.9.3.2 , жумла — 1.5.22, установлен модуль SOBI2 Geo Category Overview.
все делал по инструкции,
потом скачал ваш исправленный файл entry.functions.php, и перезалил — заработало.
может версии соби разные и поэтому не работало?
Пытался показывать карту через модальное окно Mootools..
Показывается рамка, элементы, но непосредственно карты (топографии) не видно. Только серый фон.. (
Кто сталкивался ?
Скажите пожалуйста, не могли бы Вы заменить гугл карту на яндекс карту в компоненте Improve My City . Можно за денежку, можно за ссылки и слова благодарности на сайтах.
Спасибо.
С уважением, Михаил