PREMIER
Осваиваюсь на форуме
 
Репутация: +5/-0
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
Пол: 
Сообщений: 279
|
 |
« Ответ #1 : 23.09.2009, 22:33:15 » |
|
С июля так и не появилось "более подробно".  На всякий случай распишу для тех, кто не знает английский. Работать эта функциональность начинает с версии 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
Пол: 
Сообщений: 279
|
 |
« Ответ #2 : 23.09.2009, 22:39:37 » |
|
После всего проделанного - заработало. Но остался маленький, но очень важный косячок. Во всяком случае у меня. Не знаю, как у других. При отображении объекта карта отрабатывает на все 100%. Но при добавлении нового и редактировании уже существующего - карты нет. Рамка положенного ей размера есть, надпись Powered by Google, кнопки управления картой... А самой карты нет. ;( Подскажите пожалуйста, в чем проблема? PS Ссылочка на работающий просмотр объекта.Дал права гостям (незарегистрированным) на создание записей. Можно посмотреть на карту при добавлении точки...
|
|
|
|
« Последнее редактирование: 23.09.2009, 22:44:57 от mystique »
|
Записан
|
|
|
|
PREMIER
Осваиваюсь на форуме
 
Репутация: +5/-0
Offline
Пол: 
Сообщений: 121
Сделайте патриотизм своим образом жизни!
|
 |
« Ответ #3 : 24.09.2009, 14:00:57 » |
|
mystique ну вот и появилось продолжение  ... сейчас ближе к новому году когда вернусь к этой теме, напишу новые мысли, а пока кому есть что написать пишите. 
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #4 : 24.09.2009, 14:28:51 » |
|
Я старался... В плане - продолжение набросать.  Только вот до нового года - это так долго... Очень бы хотелось понять, почему один и тот же скрипт в просмотре отображает карту нормально, а вот при добавлении/редактировании - косячит. ;((( Даже не знаю, с какой стороны к этой проблеме подойти... ;( !
|
|
|
|
|
Записан
|
|
|
|
Lord Glue
Завсегдатай
   
Репутация: +65/-0
Offline
Пол: 
Сообщений: 568
добрый пандо
|
 |
« Ответ #5 : 24.09.2009, 17:45:07 » |
|
Но при добавлении нового и редактировании уже существующего - карты нет. Рамка положенного ей размера есть, надпись Powered by Google, кнопки управления картой... А самой карты нет. ;( Подскажите пожалуйста, в чем проблема?
Уважаемый, я в 3 секунды нашел вашу проблему..... поле у вас называется field_lat, а в карте ясно написано, что поле должно называться field_latitudeА на будущее firefox+firebug Вас спасут  PS Денег, поцелуев, славы не надо 
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #6 : 24.09.2009, 19:43:57 » |
|
Чйорт побъери! Сказываются долгие годы работы программером на оборонку. В том числе и с картографией. Поля именовали у нас просто lat и lon.  Действительно заработало. Нужно внимательнее смотреть на именования полей.  Ну по крайней мере не зря этой штукой занялся. Зато продолжение инструкций набросалось. 
|
|
|
|
« Последнее редактирование: 24.09.2009, 20:09:32 от mystique »
|
Записан
|
|
|
|
lukum
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 61
|
 |
« Ответ #7 : 02.10.2009, 20:23:14 » |
|
Все сделал как тут сказано, но остался один вопросик: Нужно вводить координаты широты и долготы для каждой фирмы отдельно? А нельзяли ,что бы расположение выхватывалось из параметров которые заданы в адресе этой фирмы?
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #8 : 02.10.2009, 21:38:34 » |
|
В общем случае - нужно вводить. А точнее - тыкнуть мышкой в карту.  Но если вы хотите, чтобы координаты подставлялись автоматически, то вот вам темка, в которой подробно рассказано, как так сделать. http://joomlaforum.ru/index.php/topic,77777.0.html
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #9 : 05.10.2009, 14:20:38 » |
|
А вот другая проблемка с картой. Нужно поставить не точку, а нарисовать область... Возможно, с ограниченным числом точек. (Конкретно - обвести периметр площадных объектов. В моем случае - города).
Как это можно реализовать? Добавить полей с координатами и вытаскивать конкретные точки на каждый клик? Как-то не совсем логично и интуитивно понятно для пользователя получается... ;(
|
|
|
|
|
Записан
|
|
|
|
Lord Glue
Завсегдатай
   
Репутация: +65/-0
Offline
Пол: 
Сообщений: 568
добрый пандо
|
 |
« Ответ #10 : 05.10.2009, 14:30:35 » |
|
ну посмотрите Google map api - там ребята чего только не придумали. Вдруг в примерах будет что-то подходящее
|
|
|
|
|
Записан
|
|
|
|
|
|
liberator
Осваиваюсь на форуме
 
Репутация: +2/-0
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
Пол: 
Сообщений: 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
|
 |
« Ответ #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 ListRC 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
Пол: 
Сообщений: 279
|
 |
« Ответ #15 : 12.10.2009, 09:07:31 » |
|
Сначала удивился, что с июля эта правка уже есть, а у меня ее не было. Хотя ставил свежую версию. А потом увидел, что это только под 1,5 джомлу и успокоился.  У меня-то 1.0.15 
|
|
|
|
|
Записан
|
|
|
|
alexandro
Осваиваюсь на форуме
 
Репутация: +1/-1
Offline
Сообщений: 26
|
 |
« Ответ #16 : 25.10.2009, 13:06:15 » |
|
Спасибо за инструкцию, благодаря ей сделал. При просмотре детально карта показывается и точка на карте отмечается. А вот как сделать чтобы в режиме добавления записи и её редактирования показывалась точка на карте. А то карта отображается правильно, но где именно объект никак не отмечается  Скрипт использую от mystique.
|
|
|
|
|
Записан
|
|
|
|
alexandro
Осваиваюсь на форуме
 
Репутация: +1/-1
Offline
Сообщений: 26
|
 |
« Ответ #17 : 27.10.2009, 15:48:50 » |
|
Кстати, а примеров для вывода несколько точек на карте, например для одной категории никто не видел?
|
|
|
|
|
Записан
|
|
|
|
|
SyncMaster
|
 |
« Ответ #18 : 27.10.2009, 16:18:05 » |
|
Кстати, а примеров для вывода несколько точек на карте, например для одной категории никто не видел?
Geo Category Overview Module подойдёт?
|
|
|
|
|
Записан
|
|
|
|
alexandro
Осваиваюсь на форуме
 
Репутация: +1/-1
Offline
Сообщений: 26
|
 |
« Ответ #19 : 27.10.2009, 16:41:20 » |
|
Дык, так он же платный. Даже не знаю как сказать подойдет или нет, не смотря  . Но, вроде то что надо.
|
|
|
|
« Последнее редактирование: 27.10.2009, 16:45:03 от alexandro »
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #20 : 27.10.2009, 16:43:11 » |
|
Очень приятная штука, хоть и платная. Много чего умеет. Я бы с радостью ее купил, если бы кто-нибудь помог совладать с PayPal. Ни разу еще им не пользовался.  В принципе с их сайта есть ссылочка на пример работы этого модуля. http://joomla.sigsiu.net/directory.html
|
|
|
|
« Последнее редактирование: 27.10.2009, 17:10:07 от mystique »
|
Записан
|
|
|
|
|
SyncMaster
|
 |
« Ответ #21 : 27.10.2009, 17:32:10 » |
|
На PayPal доступно всё описано по-русски. На тот момент, когда я регистрировался, требовалась карта не хуже Visa Classic или MasterCard. Сейчас не знаю. В любом случае, моя Sberbank MasterCard проходит на ура и в PayPal и в MoneyBookers.
|
|
|
|
|
Записан
|
|
|
|
|
|
|
SyncMaster
|
 |
« Ответ #23 : 28.10.2009, 11:32:00 » |
|
Напомнило мне «Не читайте перед обедом советских газет» © х/ф «Собачье сердце»…
Как можно доверять такому источнику? Достаточно просто посмотреть его меню. Уверен, это кто-то из разорившихся конкурентов. К тому же, жалуются продавцы за блокировку счета пятилетней давности. Вполне возможно их блокировали «до разбирательства» за какие-то махинации. Никто же не выложил официальные документы. И не выложат. Да и пароли надо использовать нормальные, а не «123456» или «qwerty».
Я не один год использую PayPal. Так же, его используют мои друзья, работающие за границей, и у которых бизнес работает при помощи PayPal. Никто не говорил о каких-то сложностях. Кроме вывода денег с PayPal'а в Россию. Просто адская комиссия. Ну это в духе «вот на эти два процента я и живу».
До конца этого года я планирую приобрести несколько программных продуктов на 1500–3000$. Ессно через PayPal. И не боюсь за содержимое свой дебетовой карты.
|
|
|
|
|
Записан
|
|
|
|
|
intcorp
|
 |
« Ответ #24 : 05.11.2009, 23:08:12 » |
|
А как определить координаты объекта на карте со страницы перехода по ссылке waySearchUrl на Google maps?
|
|
|
|
« Последнее редактирование: 05.11.2009, 23:19:14 от intcorp »
|
Записан
|
|
|
|
|
SyncMaster
|
 |
« Ответ #25 : 05.11.2009, 23:14:56 » |
|
Вы про Geo Category Overview Module? Я не знаю кто покупал этот продукт. Но в любом случае, Вам должны оказать официальную поддержку — Вы же его купили 
|
|
|
|
|
Записан
|
|
|
|
|
intcorp
|
 |
« Ответ #26 : 05.11.2009, 23:22:31 » |
|
Вы про Geo Category Overview Module? Я не знаю кто покупал этот продукт. Но в любом случае, Вам должны оказать официальную поддержку — Вы же его купили  Карта уже отображается (после введения любых координат). Вопрос стоял о стандартных решениях в SOBI2 + Google maps. Почему со страницы waySearchUrl переходит куда следует, а если выводить карту на транице, надо обязательно координаты?
|
|
|
|
|
Записан
|
|
|
|
|
intcorp
|
 |
« Ответ #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
|
 |
« Ответ #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
Пол: 
Сообщений: 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
Пол: 
Сообщений: 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
|
 |
« Ответ #31 : 07.11.2009, 12:16:40 » |
|
Из данных по месторасположению используются поля var cityField = 'field_city'; var streetField = 'field_street'; var countryField = 'field_country';
|
|
|
|
|
Записан
|
|
|
|
|
intcorp
|
 |
« Ответ #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
|
 |
« Ответ #33 : 07.11.2009, 19:34:19 » |
|
Еще вопрос: можно ли как-то самому добавить номер дома на карте в Google или отправить инфу мастерам Google? Я вот порой смотрю и не понимаю, как люди ищут информацию… Поиск « карты Google сообщить об ошибке». У меня первая ссылка сверху.
|
|
|
|
|
Записан
|
|
|
|
liberator
Осваиваюсь на форуме
 
Репутация: +2/-0
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
Пол: 
Сообщений: 201
|
 |
« Ответ #35 : 25.11.2009, 18:46:13 » |
|
"Скрипт ручного указания на карте:"
что может быть если у меня белое пространство вместо карты? даже без рамки гугл
(на странице добавления пользователем материала в каталог и указания его расположения на карте)
|
|
|
|
|
Записан
|
|
|
|
|
SyncMaster
|
 |
« Ответ #36 : 25.11.2009, 19:06:58 » |
|
что может быть если у меня белое пространство вместо карты? даже без рамки в Googleвключите отображение ошибок и посмотрите что пишет.
|
|
|
|
|
Записан
|
|
|
|
zromualdo
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 201
|
 |
« Ответ #37 : 25.11.2009, 20:14:32 » |
|
включил. ничего не пишет. может от того что локал хост?
|
|
|
|
|
Записан
|
|
|
|
|
SyncMaster
|
 |
« Ответ #38 : 25.11.2009, 20:20:23 » |
|
возможно. я давно не использую локальные вебсерверы, а сразу настраиваю на хостинге — проблем меньше и ошибки искать проще.
|
|
|
|
|
Записан
|
|
|
|
zromualdo
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 201
|
 |
« Ответ #39 : 13.01.2010, 10:58:07 » |
|
два вопросика: 1. в модуле Гео Категории увеличение карты работает только по двойному щелчку. Как сделать по прокрутке колеса мышки? 2. в стандартной Google карте появилась кнопка "Ещё" (http://maps.google.com/) (можно вкл/выкл фотки, видео и т.д.). Как я понял с гугловской инструкции, код на ее добавление они сообщат чуть попозже - я правильно понял или уже можно ее добавить? никто не смотрел?
|
|
|
|
|
Записан
|
|
|
|
zromualdo
Давно я тут
  
Репутация: +4/-0
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
Пол: 
Сообщений: 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 строчки вставить в твой код надо
|
|
|
|
|
Записан
|
|
|
|
|
|
CrazyMAMOHT
Захожу иногда

Репутация: +0/-0
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&v=2&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, "© 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
Пол: 
Сообщений: 81
SINTEZ2 + мафон "легенда"
|
 |
« Ответ #44 : 10.08.2010, 22:13:02 » |
|
Доброго всем! Ни как не могу понять в чём проблема. Сделал всё, как изложил автор топика, и вроде всё работает. Но если переместить поле с картой выше полей с координатами, то при добавлении записи, вместо карты отображается только рамка с гуглом  Joomla 1.5, sobi2-RC2.9.2.4
|
|
|
|
|
Записан
|
|
|
|
prostoy
Давно я тут
  
Репутация: +3/-0
Offline
Пол: 
Сообщений: 304
Истина где то рядом.
|
 |
« Ответ #45 : 30.08.2010, 21:46:37 » |
|
Извините друзья, я так и не понял в какой файл надо править что бы увеличить размер ока?
|
|
|
|
|
Записан
|
|
|
|
Lord Glue
Завсегдатай
   
Репутация: +65/-0
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
Пол: 
Сообщений: 304
Истина где то рядом.
|
 |
« Ответ #47 : 31.08.2010, 07:57:12 » |
|
Lord Glue я понял что надо менять только в каком файле?
|
|
|
|
|
Записан
|
|
|
|
Lord Glue
Завсегдатай
   
Репутация: +65/-0
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
Сообщений: 16
|
 |
« Ответ #49 : 02.09.2010, 03:52:03 » |
|
Ребят, есть готовое решение для Joomla 1.0.15? Часов 6 уже бьюсь головой, никак не настрою, чтоб все работало на автомате.
|
|
|
|
|
Записан
|
|
|
|
zwolf
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 31
|
 |
« Ответ #50 : 18.06.2011, 15:15:01 » |
|
Помогите прикрутить карты от викимапии для каталога SOBI2. Нашего города Волгодонска нет на карте Google.
|
|
|
|
|
Записан
|
|
|
|
|