Заметка о том как настроить показ гуглокарт в SOBI2.
Особенности в том что российские адреса несколько отличаются от европейских поэтому будут некоторые правки кода подсчета координат.
Пример основан на настроках демо-сайта sigsiu.net — http://joomla.sigsiu.net/administrator/index2.php?option=com_sobi2&task=editFields (demo/demo).
1. Зайди в Конфигурация-Управление пользовательскими полями.
2. Создать 2 поля типа inputbox:
- имя поля field_latitude, метка поля Latitude, css-класс inputbox.
- имя поля field_longitude, метка поля Longitude, css-класс inputbox.
3. Создать одно поле типа text code:
- имя поля field_fetchcoordinates, метка поля Fetch coordinates,
text code:
<script type="text/javascript" language="JavaScript"> /* adjust here the field names if they are not correct */ var apiKey = "{googleApiKey}"; var cityField = 'field_city'; var houseField = 'field_house'; var streetField = 'field_street'; var latitudeField = 'field_latitude'; var longitudeField = 'field_longitude'; function fetchCoordinates() { /* here you should not change anything */ var gRequest = null; var city = document.getElementById(cityField).value; var street = document.getElementById(streetField).value; var house = document.getElementById(houseField).value; { var gRequest = "http://maps.google.com/maps/geo?q=" +city+ "+" +street+ "+" +house+ "&callback=getCoordinates&output=JSON&key="+apiKey; var scriptObj = document.createElement("script"); scriptObj.setAttribute("type", "text/javascript"); scriptObj.setAttribute("src", gRequest); document.getElementsByTagName("head").item(0).appendChild(scriptObj); } } function getCoordinates(data) { switch(data.Status.code) { case 610: /* you can change the error message here */ alert("Api key not valid: {googleApiKey}"); break; case 603: case 602: case 601: case 500: /* you can change the error message here */ alert("Cannot get coordinates for this address"); break; case 200: document.getElementById(latitudeField).value = data.Placemark[0].Point.coordinates[1]; document.getElementById(longitudeField).value = data.Placemark[0].Point.coordinates[0]; break; } } </script> <!-- You can change the "value" (The label on the button) here --> <input type="button" class="button" onclick="fetchCoordinates();" value="Fetch Coordinates"/> |
У меня на сайте используется собственная карта с использованием API Google Maps (lysvagrad.net/index.php?o...er&Itemid=83)
Подскажите, возможно ли использовать также свою карту, например в SOBI2. Как заставить отображать SOBI2 не стандартную карту (например спутник), а именно свою карту?!
1. Возможно (в скрипты с открытым кодом внедрить можно практически все что угодно ).
2. Думаю заставить SOBI2 отображать вашу карту можно примерно также как вы заставили ее отобразить компонент com_wrapper. Я бы поискал в шаблоне страницы элемента каталога формирование стандартной ссылки на карту и поменял ее на нужную.
Хочется сделать, чтобы при детальном просмотре выводилась карта местности с указанием метки на карте.
Для этого было проделано следующее:
Записан Google API Key в настройках (View Configuration->Google Maps)
Созданы поля 'field_longitude' и 'field_latitude' для географической долготы и широты (View Configuration->Google Maps)
Создано поле 'field_map', имеющее тип «text code», в которое вставлен следующий скрипт, указанный ниже:
;
//
При добавлении карта отображается (стандартная) и при щелчке по карте поля 'field_longitude' и 'field_latitude' заполняются координатами.
Далее при детальном просмотре также отображается карта с маркером.
Однако, мой город не отрисован и снимки с космоса тоже ниочем… поэтому используется своя карта на гугловском движке:(lysvagrad.net/index.php?o...er&Itemid=83)
Используется скрипт:
//
Пробывал в поле 'field_map' вставить вышеуказанный скрипт, но ничего не отображается или в итоге отображается карта со спутника, а нужно чтобы своя карта отображалсь.
Еще в SOBI2 в настройках есть встроенный редактор реестра и там есть раздел Section: [google_maps]
и есть параметр map_type , где и указывается какой тип карты выводить по умолчанию, к примеру Спутник — G_SATELLITE_MAP, а вообще гугл работает с такими типами карт:
G_NORMAL_MAP — отображает стандартные двухмерные Карты Google
G_SATELLITE_MAP — отображает фотографические карты
G_HYBRID_MAP — отображает комбинацию фрагментов фотографий и слоя фрагментов с наиболее важными объектами (дорогами, названиями городов)
Но вот как заставить вывести свою карту, никак не разберусь, может кто сталкивался, подскажите.
Формирование кода карты в SOBI2 происходит в функции showGoogleMaps (components\com_sobi2\includes\entry.functions.php). Простой вариант — заменить методы формирования стандартной карты в этой функции на те которые используются в вашей карте, вариант универсальнее — сделать настройку вывода стандартной или пользовательской карты.
А я в свое время снес карту гугл на сайте в соби2. Теперь мучаюсь... На вкадке карты в каталоге выдает
{mosmap lightbox=’1?|address=’Чебоксары пр-т 9 Пятилетки , ’|text=’Сантехника’ }