LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
28.05.2012, 01:30:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: 1 2 [Все]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: SOBI2 и карты  (Прочитано 10418 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
PREMIER
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 121

Сделайте патриотизм своим образом жизни!


« : 11.07.2009, 22:17:00 »

Приветствую. Есть необходимость сделать на SOBI2 пару каталогов, в том числе и каталог недвижимости. Специальные компоненты для недвижимости изучил, всё там интересно, но не то что нужно под мои задачи, а вот SOBI2 полностью подходит, нужно будет конечно вывод подправить, но это не страшно. Основная проблема-заморочка тут с картами. Естественно при продажи недвижимости и земли (лесов, полей и рек) часто очень нужно указать где это всё находится на карте. Есть встроенная функция работы с Google Maps, но из того что освоил я, мне показалось, что там не достаточно удобно сделано. Так же интересна интеграция карт Яндекса.

Информации различной достаточно, но есть в ней разрозненность и вот я решил пока разбираюсь сам, в рамкой этой темы чуть упорядочить информацию для потомков.

Пропускаю (пока), моменты скачки и русификации компонента. Переходим к картам.

1. Встроенная функция Google Maps

Чтобы она включалась и заработала я сделал следующие:

1. Создание полей для Широты и Долготы

Зашёл Компоненты -> Sigsiu Online Business Index 2 -> Общие параметры -> Настройка полей

Там нажал на кнопку "Добавить новое поле" и создал новое поле со следующими параметрами:

Код:
Название поля - field_latitude
Заголовок поля - Широта
Тип поля - inputbox
Опубликовано - Да
Административное поле - Нет
Описание поля - пока не какого описания не делал
Использовать визуальный редактор - Нет
Класс CSS - inputbox
Добавить новую строку - Да
Отображать поле - Нет
Предпочитаемый размер - 10
Максимальная длина - 15
Строк - 0
Колонок - 0
Обязательное - Да
Бесплатное - Да
Цена - 0,00 (ну это это понятно раз выше бесплатно указал)
Отображать поле - Скрытое
Интернет ссылка - Нет
Способ поиска - Нет

Нажал "Сохранить", а потом создал ещё одно поле с теми же параметрами что и выше, только с отличием в обозначении:

Код:
Название поля - field_longitude
Заголовок поля - Долгота

2. Регистрация и получение ключа к API

Зашёл по ссылке http://code.google.com/intl/ru/apis/maps/signup.html

Там я для того чтобы получить ключ к API Карт Google, прочитал (пролистал), внизу я сказал, что "Я ознакомлен и согласен с условиями и положениями", ввел адрес своего сайта, нажал на кнопку "Сгенерировать ключ к API". Открылось новое окно, всё там было написанно я на всякий случай сохранил, но для дальнейших манипуляций нам понадобится собственно данные из поля "Your key is:", что-то типа "ABQIAAAAKX-1S59qT-IwH_5quFrcRRTSdatOO8Erfl7_pkXTjrwzucL-BxQIc5MYo23UEcneU6x_S-jCPXiv_w" - но у вас будет свой.

3. Включение и настройка функции Google Maps

Зашёл Компоненты -> Sigsiu Online Business Index 2 -> Общие параметры -> Параметры отображения -> Вкладка Google Maps

Там:
 
Код:
Отображать Google Maps - Да
API ключ - вставил выше приведенный ключ полученный с http://code.google.com/intl/ru/apis/maps/signup.html
Ширина карты - это как вам надо, мне надо 500
Высота карты - тоже как вам надо, мне надо 250
Поле для значения широты карты - field_latitude
Поле для значения долготы карты - field_longitude
Информационное окно - это как вам надо, я поставил Нет (зачем это позже расскажу)
Масштаб увеличения - тут масштаб который нужен вам, мне подошёл 6

Нажал "Сохранить"

Всё встроенную в SOBI2 функцию Google Maps мы активировали.

Информация (размышления) приведённая в окне ниже устарела, в связи с получением новой информации
Цитировать
Тут начинаются не удобства, например при создании новой записи в компонентах по продаже недвижимости, выбор места на карте производится прямо на гугл карте, где находится объект, на него ставится указатель, выбирается способ показа (Карта, Ландшафт и т.д.), масштаб, сохраняешь и пользователю прямо так и выводится всё. Тут у нас при создании новой записи есть просто два поля: Широта и Долгота. И даже ни какой ссылки, чтобы перейти на Google Maps и там найти нужные широту и долготу.

Я открываю в соседнем окне http://maps.google.ru/, ищу нужное место, нажимаю на правую кнопку, в выпадающем меню выбираю "Как проехать от сюда" слева открывается новый фрэйм, там в значении "А" (от куда) находятся координаты, например 54.972224, 73.393450, беру 54.972224 вставляю в поле Широта, 73.393450 - Долгота. Ввожу, все другие необходимые данные. Нажимаю "Сохранить".
Захожу, смотрю что получилось. Выводится карта, с нужными координатами, но с одним и тем же увеличением, нельзя для каждого отдельного случая самостоятельно выбирать увеличение. Вижу что нету кнопок выбора отображения (Карта, Ландшафт, Спутник) и при создании записи нельзя было выбрать режим отображения.

Вопрос 1:
Можно ли как-то улучшить встроенную функцию работы с Google Maps, чтобы это было удобно как например в Estate Agent Improved, чтобы при создании записи, как представители администрации, так и простые пользователи могли бы указать на гугловой карте место нахождения объекта, вид отображения, увеличение, нажать сохранить и потом чтобы так всем и выводилось, кроме того выводилось и предоставляло возможность переключать режимы вывода, если например автор указал Спутник, а ты захотел посмотреть на карту или ландшафт, то просто нажал нужную кнопку и всё?

Ответ на Вопрос 1 (подсказал AndreiSm)

Получается, что я не создал ещё третьего поля, в демонстрационном примере на http://joomla.sigsiu.net/ к сожалению третьего поля с картой нет. Добавляю к выше изложенному описанию пункт 4.

4. Создание нового поля для вывода карты при создании записи

Позже опишу более подробно, а пока вот ссылки на официальный сайт:

http://www.sigsiu.net/faq/how_to_fetch_geo_coordinates_in_add_edit_entry_form_by_map.html
http://www.sigsiu.net/faq/how_to_use_tabs.html
« Последнее редактирование: 12.07.2009, 13:42:40 от PREMIER » Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #1 : 23.09.2009, 22:33:15 »

С июля так и не появилось "более подробно". Wink На всякий случай распишу для тех, кто не знает английский.

Работать эта функциональность начинает с версии RC 2.7.2

Общее решение:

    * Получить и записать полученный Google API Key в настройках  (View Configuration->Google Maps)
    * Создать поле 'field_longitude' и поле 'field_latitude' для географической долготы и широты (View Configuration->Google Maps)
    * Создать поле 'field_map', имеющее тип "text code", в которое вставить следующий скрипт, указанный ниже.
    * Magic Quotes (magic_qotes_gpc) has to be set to on! (Так и не понял толком, что это такое имеется ввиду. Не делал. Без этого тоже работает.)


Вставляемый скрипт:
Код:
<script src="http://maps.google.com/maps?file=api&v=1&key={googleApiKey}" type="text/javascript"></script>;
 
<div id="map" style="width: 400px; height: 300px"></div>
 
<script type="text/javascript">
    //<![CDATA[
 
    var start_latitude = "52.4777619318499";
    var start_longitude = "-1.89788818359375";
    var zoomlevel_add = 11;
    var zoomlevel_edit = 3;
 
    var map = new GMap(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
 
  var latitude = document.getElementById('field_latitude').value;
  if (latitude == "")
    latitude = start_latitude;
  var longitude = document.getElementById('field_longitude').value;
  if (longitude == "")
    longitude = start_longitude;
  if (latitude == start_latitude)
     zoomlevel = zoomlevel_add;
  else
     zoomlevel = zoomlevel_edit;
 
    // center and zoom to the lat/long in the form
    map.centerAndZoom(new GPoint(longitude,latitude), zoomlevel);
 
    GEvent.addListener(map, 'click',
        function(overlay, point) {
            if (point) {
                document.getElementById('field_latitude').value = point.y;
                document.getElementById('field_longitude').value = point.x;
            }
        }
    );   
//]]>
</script>


По желанию можно поменять стартовые значения переменных:
zoomlevel_add - стартовый уровень масштабирования при добавлении новой точки
zoomlevel_edit - стартовый уровень масштабирования при редактировании существующей точки
start_latitude, start_longitude - стартовые координаты позиционирования карты

Также можно изменить размеры экранчика в самом первом DIV-е (изначально заданы на 400px x 300px).
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #2 : 23.09.2009, 22:39:37 »

После всего проделанного - заработало. Но остался маленький, но очень важный косячок. Во всяком случае у меня. Не знаю, как у других. При отображении объекта карта отрабатывает на все 100%. Но при добавлении нового и редактировании уже существующего - карты нет. Рамка положенного ей размера есть, надпись Powered by Google, кнопки управления картой... А самой карты нет. ;( Подскажите пожалуйста, в чем проблема?


PS
Ссылочка на работающий просмотр объекта.
Дал права гостям (незарегистрированным) на создание записей. Можно посмотреть на карту при добавлении точки...

« Последнее редактирование: 23.09.2009, 22:44:57 от mystique » Записан
PREMIER
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 121

Сделайте патриотизм своим образом жизни!


« Ответ #3 : 24.09.2009, 14:00:57 »

mystique ну вот и появилось продолжение  Grin... сейчас ближе к новому году когда вернусь к этой теме, напишу новые мысли, а пока кому есть что написать пишите. Roll Eyes
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #4 : 24.09.2009, 14:28:51 »

Я старался... В плане - продолжение набросать. Wink

Только вот до нового года  - это так долго... Очень бы хотелось понять, почему один и тот же скрипт в просмотре отображает карту нормально, а вот при добавлении/редактировании - косячит. ;((( Даже не знаю, с какой стороны к этой проблеме подойти... ;(  !
Записан
Lord Glue
Завсегдатай
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 568


добрый пандо


« Ответ #5 : 24.09.2009, 17:45:07 »

Но при добавлении нового и редактировании уже существующего - карты нет. Рамка положенного ей размера есть, надпись Powered by Google, кнопки управления картой... А самой карты нет. ;( Подскажите пожалуйста, в чем проблема?
Уважаемый, я в 3 секунды нашел вашу проблему..... поле у вас называется field_lat,
а в карте ясно написано, что поле должно называться field_latitude
А на будущее firefox+firebug Вас спасут Azn
PS Денег, поцелуев, славы не надо Azn
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #6 : 24.09.2009, 19:43:57 »

Чйорт побъери! Сказываются долгие годы работы программером на оборонку. В том числе и с картографией.  Поля именовали у нас просто lat и lon. Wink

Действительно заработало. Нужно внимательнее смотреть на именования полей. Wink

Ну по крайней мере не зря этой штукой занялся. Зато продолжение инструкций набросалось. Wink
« Последнее редактирование: 24.09.2009, 20:09:32 от mystique » Записан
lukum
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 61


« Ответ #7 : 02.10.2009, 20:23:14 »

Все сделал как тут сказано, но остался один вопросик: Нужно вводить координаты широты и долготы для каждой фирмы отдельно? А нельзяли ,что бы расположение выхватывалось из параметров которые заданы в адресе этой фирмы?
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #8 : 02.10.2009, 21:38:34 »

В общем случае - нужно вводить. А точнее - тыкнуть мышкой в карту. Wink

Но если вы хотите, чтобы координаты подставлялись автоматически, то вот вам темка, в которой подробно рассказано, как так сделать. Wink
http://joomlaforum.ru/index.php/topic,77777.0.html
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #9 : 05.10.2009, 14:20:38 »

А вот другая проблемка с картой. Нужно поставить не точку, а нарисовать область... Возможно, с ограниченным числом точек. (Конкретно - обвести периметр площадных объектов. В моем случае - города).

Как это можно реализовать? Добавить полей с координатами и вытаскивать конкретные точки на каждый клик? Как-то не совсем логично и интуитивно понятно для пользователя получается... ;(
Записан
Lord Glue
Завсегдатай
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 568


добрый пандо


« Ответ #10 : 05.10.2009, 14:30:35 »

ну посмотрите Google map api - там ребята чего только не придумали.
Вдруг в примерах будет что-то подходящее
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #11 : 05.10.2009, 14:59:00 »

Смотрел. В принципе про области там есть. Но нужно где-то хранить их координаты. Толи пользоваться SOBI-полями, толи делать свою скрытую табличку с множеством координат... Толи вдруг еще какие решения несложные есть? Wink
Записан
liberator
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 197



« Ответ #12 : 11.10.2009, 13:45:23 »

спасибо за вариант реализации, предложу еще один:
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"/>
Записан
liberator
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 197



« Ответ #13 : 11.10.2009, 14:02:21 »

вариант реализации близкий к первому, только код немного другой.
http://www.sigsiu.net/forum/index.php?action=profile%3Barea=showposts%3Bu=6030
Код:
<script type="text/javascript" language="JavaScript">
/* adjust here the field names if they are not correct */
var apiKey = "{googleApiKey}";
var postalCodeField = 'field_postcode';
var cityField = 'field_city';
var streetField = 'field_street';
var countryField = 'field_country';
var latitudeField = 'field_latitude';
var longitudeField = 'field_longitude';
 
function fetchCoordinates() {
  /* here you should not change anything  */
  var gRequest = null;
  var postalcode = document.getElementById(postalCodeField).value;
  var city = document.getElementById(cityField).value;
  var street = document.getElementById(streetField).value;
  var country = document.getElementById(countryField).value;
 
  if(postalcode == '' || city == '' || street == '' || country == '' ) {
    /* you can change the error message here */
    alert("Please fill in the address fields first");
  }
  else {
    var gRequest = "http://maps.google.com/maps/geo?q=" +street+ "+" +postalcode+ "+" +city+ "+" +country+ "&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"/>
 
Записан
SyncMaster
Moderator
*****

Репутация: +51/-6
Offline Offline

Пол: Мужской
Сообщений: 1138


« Ответ #14 : 11.10.2009, 22:16:21 »

2. Создать 2 поля типа inputbox:
- имя поля field_latitude, метка поля Latitude, css-класс inputbox.
- имя поля field_longitude, метка поля Longitude, css-класс inputbox.

Sigsiu Online Business Index 2 Full ChangeLog List
RC 2.9.2.2 (Thu, 30 Jul 2009)
+ Add: (J!1.5 only) Fields for longitude and latitude are added on fresh installation
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #15 : 12.10.2009, 09:07:31 »

Сначала удивился, что с июля эта правка уже есть, а у меня ее не было. Хотя ставил свежую версию. А потом увидел, что это только под 1,5 джомлу и успокоился. Wink У меня-то 1.0.15 Wink
Записан
alexandro
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 26


« Ответ #16 : 25.10.2009, 13:06:15 »

Спасибо за инструкцию, благодаря ей сделал.
При просмотре детально карта показывается и точка на карте отмечается. А вот как сделать чтобы в режиме добавления записи и её редактирования показывалась точка на карте. А то карта отображается правильно, но где именно объект никак не отмечается Sad

Скрипт использую от mystique.
Записан
alexandro
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 26


« Ответ #17 : 27.10.2009, 15:48:50 »

Кстати, а примеров для вывода несколько точек на карте, например для одной категории никто не видел?
Записан
SyncMaster
Moderator
*****

Репутация: +51/-6
Offline Offline

Пол: Мужской
Сообщений: 1138


« Ответ #18 : 27.10.2009, 16:18:05 »

Кстати, а примеров для вывода несколько точек на карте, например для одной категории никто не видел?
Geo Category Overview Module подойдёт?
Записан
alexandro
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 26


« Ответ #19 : 27.10.2009, 16:41:20 »

Дык, так он же платный. Даже не знаю как сказать подойдет или нет, не смотря Sad.
Но, вроде то что надо.
« Последнее редактирование: 27.10.2009, 16:45:03 от alexandro » Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #20 : 27.10.2009, 16:43:11 »

Очень приятная штука, хоть и платная. Много чего умеет. Я бы с радостью ее купил, если бы кто-нибудь помог совладать с PayPal. Ни разу еще им не пользовался. Wink

В принципе с их сайта есть ссылочка на пример работы этого модуля.
http://joomla.sigsiu.net/directory.html
« Последнее редактирование: 27.10.2009, 17:10:07 от mystique » Записан
SyncMaster
Moderator
*****

Репутация: +51/-6
Offline Offline

Пол: Мужской
Сообщений: 1138


« Ответ #21 : 27.10.2009, 17:32:10 »

На PayPal доступно всё описано по-русски.
На тот момент, когда я регистрировался, требовалась карта не хуже Visa Classic или MasterCard. Сейчас не знаю.
В любом случае, моя Sberbank MasterCard проходит на ура и в PayPal и в MoneyBookers.
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #22 : 28.10.2009, 10:55:20 »

Сорри за оффтопик... Но очень не хочется свой пластик светить ради одной операции. Начитался я про PayPal, и как-то не горю желанием им пользоваться. Wink
http://www.paypalwarning.com/
Записан
SyncMaster
Moderator
*****

Репутация: +51/-6
Offline Offline

Пол: Мужской
Сообщений: 1138


« Ответ #23 : 28.10.2009, 11:32:00 »

Напомнило мне «Не читайте перед обедом советских газет» © х/ф «Собачье сердце»…

Как можно доверять такому источнику? Достаточно просто посмотреть его меню. Уверен, это кто-то из разорившихся конкурентов.
К тому же, жалуются продавцы за блокировку счета пятилетней давности. Вполне возможно их блокировали «до разбирательства» за какие-то махинации. Никто же не выложил официальные документы. И не выложат.
Да и пароли надо использовать нормальные, а не «123456» или «qwerty».

Я не один год использую PayPal. Так же, его используют мои друзья, работающие за границей, и у которых бизнес работает при помощи PayPal. Никто не говорил о каких-то сложностях. Кроме вывода денег с PayPal'а в Россию. Просто адская комиссия. Ну это в духе «вот на эти два процента я и живу».

До конца этого года я планирую приобрести несколько программных продуктов на 1500–3000$. Ессно через PayPal. И не боюсь за содержимое свой дебетовой карты.
Записан
intcorp
Завсегдатай
*****

Репутация: +10/-0
Offline Offline

Сообщений: 492


« Ответ #24 : 05.11.2009, 23:08:12 »

А как определить координаты объекта на карте со страницы перехода по ссылке waySearchUrl на Google maps?
« Последнее редактирование: 05.11.2009, 23:19:14 от intcorp » Записан
SyncMaster
Moderator
*****

Репутация: +51/-6
Offline Offline

Пол: Мужской
Сообщений: 1138


« Ответ #25 : 05.11.2009, 23:14:56 »

Вы про Geo Category Overview Module?
Я не знаю кто покупал этот продукт. Но в любом случае, Вам должны оказать официальную поддержку — Вы же его купили Wink
Записан
intcorp
Завсегдатай
*****

Репутация: +10/-0
Offline Offline

Сообщений: 492


« Ответ #26 : 05.11.2009, 23:22:31 »

Вы про Geo Category Overview Module?
Я не знаю кто покупал этот продукт. Но в любом случае, Вам должны оказать официальную поддержку — Вы же его купили Wink
Карта уже отображается (после введения любых координат). Вопрос стоял о стандартных решениях в SOBI2 + Google maps. Почему со страницы waySearchUrl переходит куда следует, а если выводить карту на транице, надо обязательно координаты?
Записан
intcorp
Завсегдатай
*****

Репутация: +10/-0
Offline Offline

Сообщений: 492


« Ответ #27 : 05.11.2009, 23:25:43 »

Например ссылка перехода с waySearchUrl  http://maps.google.com/?ie=windows-1251&hl=ru&q=56%2C+%CD%E8%EA%EE%EB%FC%F1%EA%E0%FF+%F3%EB.%2C+%CD%E8%EA%EE%EB%E0%E5%E2+%D3%EA%F0%E0%E8%ED%E0 как из нее взять координаты?
Понял: жмем по флажку правой кнопкой - что тут находится - в окне поиска появляются координаты
« Последнее редактирование: 05.11.2009, 23:47:18 от intcorp » Записан
intcorp
Завсегдатай
*****

Репутация: +10/-0
Offline Offline

Сообщений: 492


« Ответ #28 : 05.11.2009, 23:30:02 »

Использую такой код:
Код:
<script type="text/javascript" language="JavaScript">
/* adjust here the field names if they are not correct */
var apiKey = "{googleApiKey}";
var cityField = 'field_city';
var streetField = 'field_street';
var countryField = 'field_country';
 
function fetchCoordinates() {
  /* here you should not change anything  */
  var gRequest = null;
  var postalcode = document.getElementById(postalCodeField).value;
  var city = document.getElementById(cityField).value;
  var street = document.getElementById(streetField).value;
  var country = document.getElementById(countryField).value;
 
  if(city == '' || street == '' || country == '' ) {
    /* you can change the error message here */
    alert("Заполните адрессные данные");
  }
  else {
    var gRequest = "http://maps.google.com/maps/geo?q=" +street+ "+" +city+ "+" +country+ "&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("Не могу получить координаты для данного адресса");
      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="Выбрать координаты"/>
И к чему эта кнопка (выбора координат)?
<!-- You can change the "value" (The label on the button) here -->
<input type="button" class="button" onclick="fetchCoordinates();" value="Fetch Coordinates"/>
Она у меня не работает...
« Последнее редактирование: 05.11.2009, 23:38:13 от intcorp » Записан
liberator
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 197



« Ответ #29 : 06.11.2009, 19:27:37 »

Sigsiu Online Business Index 2 Full ChangeLog List
RC 2.9.2.2 (Thu, 30 Jul 2009)
+ Add: (J!1.5 only) Fields for longitude and latitude are added on fresh installation
у меня Joostina 1.2.0, поэтому комментарий это или поправка критичной моей ошибки, не пойму..
Записан
liberator
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 197



« Ответ #30 : 06.11.2009, 19:30:51 »

Использую такой код:
Код:
<script type="text/javascript" language="JavaScript">
/* adjust here the field names if they are not correct */
var apiKey = "{googleApiKey}";
var cityField = 'field_city';
var streetField = 'field_street';
var countryField = 'field_country';
 
function fetchCoordinates() {
  /* here you should not change anything  */
  var gRequest = null;
  var postalcode = document.getElementById(postalCodeField).value;
  var city = document.getElementById(cityField).value;
  var street = document.getElementById(streetField).value;
  var country = document.getElementById(countryField).value;
 
  if(city == '' || street == '' || country == '' ) {
    /* you can change the error message here */
    alert("Заполните адрессные данные");
  }
  else {
    var gRequest = "http://maps.google.com/maps/geo?q=" +street+ "+" +city+ "+" +country+ "&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("Не могу получить координаты для данного адресса");
      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="Выбрать координаты"/>
И к чему эта кнопка (выбора координат)?
<!-- You can change the "value" (The label on the button) here -->
<input type="button" class="button" onclick="fetchCoordinates();" value="Fetch Coordinates"/>
Она у меня не работает...
Если не работает, значит скрипту не передаются какие либо данные, либо передаются неверно, от этого он и координат не получает..Надо копать с сторону полей. У вас поле страна заполнено?
Записан
intcorp
Завсегдатай
*****

Репутация: +10/-0
Offline Offline

Сообщений: 492


« Ответ #31 : 07.11.2009, 12:16:40 »

Из данных по месторасположению используются поля
var cityField = 'field_city';
var streetField = 'field_street';
var countryField = 'field_country';
Записан
intcorp
Завсегдатай
*****

Репутация: +10/-0
Offline Offline

Сообщений: 492


« Ответ #32 : 07.11.2009, 18:07:01 »

Еще вопрос: можно ли как-то самому добавить номер дома на карте в Google или отправить инфу мастерам Google?
Имеется торговый центр по адресу проспект Ленина 98, но на карте есть только №96, хотя задние 98 со спутника трудно не заметить http://maps.google.com/?ie=windows-1251&hl=ru&q=98%2C+%CB%E5%ED%E8%ED%E0+%EF%F0-%F2+%CD%E8%EA%EE%EB%E0%E5%E2+%D3%EA%F0%E0%E8%ED%E0 )))
Записан
SyncMaster
Moderator
*****

Репутация: +51/-6
Offline Offline

Пол: Мужской
Сообщений: 1138


« Ответ #33 : 07.11.2009, 19:34:19 »

Еще вопрос: можно ли как-то самому добавить номер дома на карте в Google или отправить инфу мастерам Google?

Я вот порой смотрю и не понимаю, как люди ищут информацию… Поиск «карты Google сообщить об ошибке». У меня первая ссылка сверху.
Записан
liberator
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 197



« Ответ #34 : 08.11.2009, 13:15:58 »

Хотелось бы реализовать следующее:
человек вводит координаты, скрипт после нажатия на кнопку получает приблизительные координаты, после чего подгружается карта и человек уже вручную указывает более точное положение...
Скрипт автоматического определения координат:
Код:
<script type="text/javascript" language="JavaScript">

var apiKey = "{googleApiKey}";
var postalCodeField = 'field_postcode';
var cityField = 'field_city';
var streetField = 'field_street';
var countryField = 'field_country';
var domField = 'field_dom';
var latitudeField = 'field_latitude';
var longitudeField = 'field_longitude';

function fetchCoordinates() {

var gRequest = null;
var postalcode = document.getElementById(postalCodeField).value;
var city = document.getElementById(cityField).value;
var street = document.getElementById(streetField).value;
var dom = document.getElementById(domField).value;
var country = "Россия";

if(postalcode == '' || city == '' || street == '' || country == '' ) {

alert("Сначала заполните все требуемые поля для адреса, а уже потом используйте автоопределение координат.");
}
else {
var gRequest = "maps.google.com/maps/geo?..=" +dom+ "+" +street+ "+" +postalcode+ "+" +city+ "+" +country+ "&output=json&key="+apiKey+"&callba ck=getCoordinates";
var scriptObj = document.createElement("script");
scriptObj.setAttribute("type", "text/javascript");
scriptObj.setAttribute("src", gRequest);
document.getElementsByTagName("head").it em(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("Невозможно определить координаты для этого адреса автоматически, укажите вручную.");
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>

<input type="button" class="button" onclick="fetchCoordinates();" value="Автоопределение координат"/>




Скрипт ручного указания на карте:
Код:
<script src="maps.google.com/maps?file..}" type="text/javascript"></script> ;
<div id="map" style="width: 500px; height: 350px"></div>

<script type="text/javascript">
//<![CDATA[

var start_latitude = "56.8825033";
var start_longitude = "35.8427687";
var zoomlevel_add = 8;
var zoomlevel_edit = 3;

var map = new GMap(document.getElementById("map"));
map.addControl(new GSmallMapControl());

var latitude = document.getElementById('field_latitude' ).value;
if (latitude == "")
latitude = start_latitude;
var longitude = document.getElementById('field_longitude' ;).value;
if (longitude == "")
longitude = start_longitude;
if (latitude == start_latitude)
zoomlevel = zoomlevel_add;
else
zoomlevel = zoomlevel_edit;

// center and zoom to the lat/long in the form
map.centerAndZoom(new GPoint(longitude,latitude), zoomlevel);

GEvent.addListener(map, 'click',
function(overlay, point) {
if (point) {
document.getElementById('field_latitude' ).value = point.y;
document.getElementById('field_longitude' ;).value = point.x;
}
}
);
//]]>
</script>
Код вставил для наглядности, его и так тут все знают..
Записан
zromualdo
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 201



« Ответ #35 : 25.11.2009, 18:46:13 »

"Скрипт ручного указания на карте:"

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

(на странице добавления пользователем материала в каталог и указания его расположения на карте)
Записан
SyncMaster
Moderator
*****

Репутация: +51/-6
Offline Offline

Пол: Мужской
Сообщений: 1138


« Ответ #36 : 25.11.2009, 19:06:58 »

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

включите отображение ошибок и посмотрите что пишет.
Записан
zromualdo
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 201



« Ответ #37 : 25.11.2009, 20:14:32 »

включил. ничего не пишет. может от того что локал хост?
Записан
SyncMaster
Moderator
*****

Репутация: +51/-6
Offline Offline

Пол: Мужской
Сообщений: 1138


« Ответ #38 : 25.11.2009, 20:20:23 »

возможно. я давно не использую локальные вебсерверы, а сразу настраиваю на хостинге — проблем меньше и ошибки искать проще.
Записан
zromualdo
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 201



« Ответ #39 : 13.01.2010, 10:58:07 »

два вопросика:

1. в модуле Гео Категории увеличение карты работает только по двойному щелчку. Как сделать по прокрутке колеса мышки?

2. в стандартной  Google карте появилась кнопка "Ещё" (http://maps.google.com/) (можно вкл/выкл фотки, видео и т.д.). Как я понял с гугловской инструкции, код на ее добавление они сообщат чуть попозже - я правильно понял или уже можно ее добавить? никто не смотрел?
Записан
zromualdo
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 201



« Ответ #40 : 21.01.2010, 21:59:27 »

3. при просмотре записи в моем каталоге заведений города, на карте где отображается расположение заведения хочу добавить слой Википедии (пример: http://code.google.com/intl/ru/apis/maps/documentation/examples/layer-simple.html)

для этого документация  Google дает такой кусочек кода
Код:
function initialize() {
  if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(40.730885,-73.997383), 15);
    var myLayer = new GLayer("org.wikipedia.en");
    map.addOverlay(myLayer);
  }
}

вставлял его в свое поле выбора широты и долготы - ничего не получается.
вот мой код:
Код:
<script src="http://maps.google.com/maps?file=api&v=1&key={googleApiKey}" type="text/javascript"></script>;
Двойной щелчок - увеличение:
<div id="map" style="width: 632px; height: 500px"></div>
 
<script type="text/javascript">
    //<![CDATA[
 
    var start_latitude = "53";
    var start_longitude = "32";
    var zoomlevel_add = 13;
    var zoomlevel_edit = 18;
 
    var map = new GMap(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
 
  var latitude = document.getElementById('field_latitude').value;
  if (latitude == "")
    latitude = start_latitude;
  var longitude = document.getElementById('field_longitude').value;
  if (longitude == "")
    longitude = start_longitude;
  if (latitude == start_latitude)
     zoomlevel = zoomlevel_add;
  else
     zoomlevel = zoomlevel_edit;





 
    // center and zoom to the lat/long in the form
    map.centerAndZoom(new GPoint(longitude,latitude), zoomlevel);


//добавляем переключатель типа карт (Карта, Спутник, Гибрид)
//map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
//указываем тип карты по-умолчанию (Спутник)
map.setMapType(G_HYBRID_MAP);



    GEvent.addListener(map, 'click',
        function(overlay, point) {
            if (point) {
                document.getElementById('field_latitude').value = point.y;
                document.getElementById('field_longitude').value = point.x;
            }
        }
    );   
//]]>
</script>
Записан
Lord Glue
Завсегдатай
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 568


добрый пандо


« Ответ #41 : 22.01.2010, 08:09:23 »

вот смотри: лучше сделай файл mapgoogle.html в корне сайта, закинь в него код и потренируйся на нем.
по коду: не вижу, чтоб ты добавил эту функцию.
 var map = new GMap(document.getElementById("map"));   //Создал объект карты
var myLayer = new GLayer("org.wikipedia.en");  //Создал объект слоя
    map.addOverlay(myLayer);          //Положил слой на карту

Т.е. функция та тебе не нужна, только 2 строчки вставить в твой код надо
Записан
zromualdo
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 201



« Ответ #42 : 26.01.2010, 11:26:41 »

помогло Azn
Записан
CrazyMAMOHT
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 11


« Ответ #43 : 02.02.2010, 21:16:16 »

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

_http://lysvacity.ru/index.php?option=com_sobi2&sobi2Task=sobi2Details&catid=3&sobi2Id=1&Itemid=5

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

Записан Google API Key в настройках  (View Configuration->Google Maps)
    
Созданы поля 'field_longitude' и 'field_latitude' для географической долготы и широты (View Configuration->Google Maps)

Создано поле 'field_map', имеющее тип "text code", в которое вставлен следующий скрипт, указанный ниже:


Код:
<script src="http://maps.google.com/maps?file=api&v=1&key={googleApiKey}" type="text/javascript"></script>;
 
<div id="map" style="width: 400px; height: 300px"></div>
 
<script type="text/javascript">
    //<![CDATA[
 
    var start_latitude = "57.80259132385254";
    var start_longitude = "58.10669504078775";
    var zoomlevel_add = 11;
    var zoomlevel_edit = 3;
 
    var map = new GMap(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
 
  var latitude = document.getElementById('field_latitude').value;
  if (latitude == "")
    latitude = start_latitude;
  var longitude = document.getElementById('field_longitude').value;
  if (longitude == "")
    longitude = start_longitude;
  if (latitude == start_latitude)
     zoomlevel = zoomlevel_add;
  else
     zoomlevel = zoomlevel_edit;
 
    // center and zoom to the lat/long in the form
    map.centerAndZoom(new GPoint(longitude,latitude), zoomlevel);
 
    GEvent.addListener(map, 'click',
        function(overlay, point) {
            if (point) {
                document.getElementById('field_latitude').value = point.y;
                document.getElementById('field_longitude').value = point.x;
            }
        }
    );  
//]]>
</script>

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

Однако, мой город не отрисован и снимки с космоса тоже ниочем… поэтому используется  своя карта на гугловском движке: _http://lysvacity.ru/map.html

Код:
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA8Wl9BKQvJavnEqRHsC4jjRRBdKLjill6Gmn_G3adwrnZaNAX1RQUr8CAVrSKZ-BEksxhdbxpvyqeDA"
      type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript" charset="utf-8">

    //<![CDATA[

    function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
document.map = map;
   document.map.addControl(new GScaleControl());
document.map.addControl(new GMapTypeControl());
document.map.addControl(new GLargeMapControl());


var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(58.12486350505505,57.755126953125),
              new GLatLng(58.06362273407202,57.8704833984375)),
           0, "&copy; 2007 lysvagrad.net");

       var copyrightCollection = new GCopyrightCollection("lysvagrad.net");
       copyrightCollection.addCopyright(copyright);

       CustomGetTileUrl=function(a,b){
          return "/map/"+(17-b)+"/"+a.x+"_"+a.y+"_"+(17-b)+".png";
       }

       var tilelayers = [new GTileLayer(copyrightCollection,0,17)];
       tilelayers[0].getTileUrl = CustomGetTileUrl;

       var custommap = new GMapType(tilelayers, new GMercatorProjection(18), "Лысьва", {errorMessage:"Сюда нельзя!"});

     map.custommap = custommap;
     document.map.addMapType(custommap);

        document.map.setCenter(new GLatLng(58.09475525718224, 57.79828906059265), 16, custommap);



      }
    }

    //]]>
    </script>


Пробывал в поле 'field_map' вставить вышеуказанный скрипт, но ничего не отображается или в итоге отображается карта со спутника, а нужно чтобы своя карта отображалсь.

Подскажите как быть, может разбирающиеся люди приведут правильный пример, какой код нужно вставить в этот поле ?  Или нужно еще, гте-то менять параметры ? Заранее спасибо.
« Последнее редактирование: 25.02.2010, 20:23:57 от SyncMaster » Записан
denmos
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Пол: Мужской
Сообщений: 81


SINTEZ2 + мафон "легенда"


« Ответ #44 : 10.08.2010, 22:13:02 »

Доброго всем! Ни как не могу понять в чём проблема.
Сделал всё, как изложил автор топика, и вроде всё работает. Но если переместить поле с картой выше полей с координатами, то при добавлении записи, вместо карты отображается только рамка с гуглом Angry
Joomla 1.5, sobi2-RC2.9.2.4
Записан
prostoy
Давно я тут
****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 304


Истина где то рядом.


« Ответ #45 : 30.08.2010, 21:46:37 »

Извините друзья, я так и не понял в какой файл надо править что бы увеличить размер ока?
Записан
Lord Glue
Завсегдатай
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 568


добрый пандо


« Ответ #46 : 31.08.2010, 04:32:41 »

Код:
<script src="http://maps.google.com/maps?file=api&v=1&key={googleApiKey}" type="text/javascript"></script>;
 
<div id="map" style="width: 400px; height: 300px"></div>
 
<script type="text/javascript">...........
так вот же - ширина - 400, высота - 300
Записан
prostoy
Давно я тут
****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 304


Истина где то рядом.


« Ответ #47 : 31.08.2010, 07:57:12 »

Lord Glue я понял что надо менять только в каком файле?
Записан
Lord Glue
Завсегдатай
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 568


добрый пандо


« Ответ #48 : 31.08.2010, 08:40:44 »

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

Записан Google API Key в настройках  (View Configuration->Google Maps)
   
Созданы поля 'field_longitude' и 'field_latitude' для географической долготы и широты (View Configuration->Google Maps)

Создано поле 'field_map', имеющее тип "text code", в которое вставлен следующий скрипт, указанный ниже:
Записан
necrqlan
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 16


« Ответ #49 : 02.09.2010, 03:52:03 »

Ребят, есть готовое решение для Joomla 1.0.15?
Часов 6 уже бьюсь головой, никак не настрою, чтоб все работало на автомате.
Записан
zwolf
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 31


« Ответ #50 : 18.06.2011, 15:15:01 »

Помогите прикрутить карты от викимапии для каталога SOBI2.
Нашего города Волгодонска нет на карте Google.
Записан
Страниц: 1 2 [Все]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet