Настройка Google Maps в SOBI2

Заметка о том как настроить показ гуглокарт в 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"/>

Комментариев: 5

  • 20.02.2010 Evgeni:

    У меня на сайте используется собственная карта с использованием API Google Maps (lysvagrad.net/index.php?o...er&Itemid=83)

    Подскажите, возможно ли использовать также свою карту, например в SOBI2. Как заставить отображать SOBI2 не стандартную карту (например спутник), а именно свою карту?!

  • 21.02.2010 Кирилл:

    1. Возможно (в скрипты с открытым кодом внедрить можно практически все что угодно :) ).

    2. Думаю заставить SOBI2 отображать вашу карту можно примерно также как вы заставили ее отобразить компонент com_wrapper. Я бы поискал в шаблоне страницы элемента каталога формирование стандартной ссылки на карту и поменял ее на нужную.

  • 21.02.2010 Evgeni:

    Хочется сделать, чтобы при детальном просмотре выводилась карта местности с указанием метки на карте.

    Для этого было проделано следующее:

    Записан 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 — отображает комбинацию фрагментов фотографий и слоя фрагментов с наиболее важными объектами (дорогами, названиями городов)

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

  • 23.02.2010 Кирилл:

    Формирование кода карты в SOBI2 происходит в функции showGoogleMaps (components\com_sobi2\includes\entry.functions.php). Простой вариант — заменить методы формирования стандартной карты в этой функции на те которые используются в вашей карте, вариант универсальнее — сделать настройку вывода стандартной или пользовательской карты.

  • 06.04.2013 Сантехник:

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

    {mosmap lightbox=’1?|address=’Чебоксары пр-т 9 Пятилетки , ’|text=’Сантехника’ }


Добавление комментария:

 css.php