Настройка 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"/>

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

  • 02.20.10 Evgeni:

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

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

  • 02.21.10 Кирилл:

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

  • 02.21.10 Evgeni:

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

    Записан Google API Key в настройках (View Configuration->Google Maps)

    Созданы поля ‘field_longitude’ и ‘field_latitude’ для географической долготы и широты (View Configuration->Google Maps)

    Создано поле ‘field_map’, имеющее тип «text code», в которое вставлен следующий скрипт, указанный ниже:
    ;

    //

    При добавлении карта отображается (стандартная) и при щелчке по карте поля ‘field_longitude’ и ‘field_latitude’ заполняются координатами.
    Далее при детальном просмотре также отображается карта с маркером.

    Однако, мой город не отрисован и снимки с космоса тоже ниочем… поэтому используется своя карта на гугловском движке:(http://lysvagrad.net/index.php?option=com_wrapper&Itemid=83)
    Используется скрипт:

    //

    Пробывал в поле ‘field_map’ вставить вышеуказанный скрипт, но ничего не отображается или в итоге отображается карта со спутника, а нужно чтобы своя карта отображалсь.
    Еще в SOBI2 в настройках есть встроенный редактор реестра и там есть раздел Section: [google_maps]
    и есть параметр map_type , где и указывается какой тип карты выводить по умолчанию, к примеру Спутник – G_SATELLITE_MAP, а вообще гугл работает с такими типами карт:
    G_NORMAL_MAP – отображает стандартные двухмерные Карты Google
    G_SATELLITE_MAP – отображает фотографические карты
    G_HYBRID_MAP – отображает комбинацию фрагментов фотографий и слоя фрагментов с наиболее важными объектами (дорогами, названиями городов)

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

  • 02.23.10 Кирилл:

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


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

Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">