Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 2054 Просмотров
*

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
Была вот такая тема: http://joomlaforum.ru/index.php?topic=184803.0

Я не стал ее продолжать, так как она была озаглавлена "...Kunena 1.6"
По вставке карты в сообщение вопросов нет, как и нет вопросов, что прописывать между терами [map].
Но вот даже в свежей версии 3.0.5, вставляемая в сообщение карта носит жуткую ущербность. Во первых - это древняя версия Google мап, где в большей части городов России, не хватает улиц, по сравнению с новыми версиями Гугл-карт. Соответственно, не возможно проставить реальную "адресную" точку на карте.
Но это пол беды.
Основная беда в том, что подгружаемая Куненой карта, патологически криво работает с координатами, вписанными между терами. (Карта понимает координаты формата 44.ххххх 39.ххххх). Точка то ставится, но отображается она не реально, а привязывается к наиболее близкому, "известному" этой карте пункту - городу, селу, трассе. То есть - пшик полный.
Существует масса форумов на базе Kunena, туристических, для путешественников, велосипедистов, джиперов и т.п, где данный вопрос с точностью отображения (и нормальной картой!) очень актуален. Не говоря уже о возможности вставки в сообщения  Гугл-треков.
В сети болтается много аналогичных вопросов, но нет ни одного ответа.
Возможно ли заменить существующую карту, на актуальные, "правильные" версии, прописав ее вместо дефолтной?
« Последнее редактирование: 16.06.2014, 13:49:04 от Lesha_K »
*

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
Нашёл в libraries/ kunena/ bbcode  начиная со стороки 1058 "прописку" дефолтной карты:
Цитировать
   // Display only link in activity streams etc..
      if (!empty($bbcode->parent->forceMinimal) || !($document instanceof JDocumentHTML)) {
         $url = 'https://maps.google.com/?q='.urlencode($bbcode->UnHTMLEncode($content));
         return '<a href="'.$url.'" rel="nofollow" target="_blank">'.$content.'</a>';
      }

      if ($id === false) {
         $document->addScript('http://maps.google.com/maps/api/js?sensor='.($sensor == true ? 'true' : 'false'));
         $id = 0;
      }

      $id ++;
      $mapid = 'kgooglemap'.$id;

      $map_type = isset($params ['type'])? strtoupper($params ["type"]): 'ROADMAP';
      $map_typeId = array('HYBRID','ROADMAP','SATELLITE','TERRAIN');
      if ( !in_array($map_type, $map_typeId) ) $map_type = 'ROADMAP';
      $map_zoom = isset($params ['zoom'])? (int) $params ['zoom']: 10;
      $map_control = $params ['control'] ? (int) $params ['control'] : 0;

      $document->addScriptDeclaration("
      // <![CDATA[
         var geocoder;
         var $mapid;

         window.addEvent('domready', function() {
            geocoder = new Google.maps.Geocoder();
         var latlng = new Google.maps.LatLng(37.333586,-121.894684);
         var myOptions = {
            zoom: $map_zoom,
            disableDefaultUI: $map_control,
            center: latlng,
            mapTypeId: Google.maps.MapTypeId.$map_type
         };
         $mapid = new Google.maps.Map(document.id('".$mapid."'), myOptions);

         var address = ".json_encode($content).";
         if (geocoder) {
            geocoder.geocode( { 'address': address}, function(results, status) {
            if (status == Google.maps.GeocoderStatus.OK) {
               $mapid.setCenter(results[0].geometry.location);
               var marker = new Google.maps.Marker({
                  position: results[0].geometry.location,
                   map: $mapid
               });
            } else {
               var contentString = '<p><strong>".JText::_('COM_KUNENA_GOOGLE_MAP_NO_GEOCODE', true)." <i>".json_encode(addslashes($content))."</i></strong></p>';
               var infowindow$mapid = new Google.maps.InfoWindow({ content: contentString });
                  infowindow$mapid.open($mapid);
            }
            });
         }
         });

      // ]]>"
      );

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

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
Продолжаю борьбу с кривой картой. Пришёл к выводу, что собака покопалась вот именно в этой строчке:

maps.google.com/maps/api/js?sensor='.($sensor == true ? 'true' : 'false'));

Kunena использует безключевую, версию гугл-мап, от сего и ущербность.
Вот как выглядит эта строка в рекомендациях от картографического сервиса Гугл:
maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE">

Как я понимаю, для использования нормальной карты, надо использовать бесплатный API-ключ от Google.
Подробнее тут: ссылка
Причём, что интересно, при использовании соответствующего ключа, можно вставлять весь спектр приложений Google этого направления - Google энджен, Гугл-трек, и т.п. (см. список ключей на их страничке).
Остается как-то нормально вписать это в файл bbcode.php, где все танцы вокруг карты начинаются с 1058 строчки.
Я совершенно беспомощен в PHP, но буду пробовать. Буду признателен за помощь.

*

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
Нет, проблема не в этом. Оперируя различными ссылками с API Google, я научился привязывать к  кнопке "Карта" в редакторе, другие карты.
Но проблема осталась. Маркер не точно отображается по заданным координатам, убегая к населенным пунктам или трассам.
Почитав сеть, просмотрев код, обнаружил, что в нём вообще не прописано отображение такой точки. А прописана библиотека геокодера, которая преобразует адрес вписанный между терами map в точку на подгружаемой карте. Но геокодер и играет обратную, злую шутку. При внесении между терами именно координат, он в конечном итоге отображает на карте не реальную метку, а привязывает ее к наиболее близкому, известному библиотеке геокодера объекту.
Так же, в той части кода, которая отвечает за нанесение маркера на подгружаемую в сообщение карту, нет ни строчки об отображении точки с заданными пользователем между терами координатами. Вывод - код надо править и дописывать.
Вообще - не солидно. При всём функционале Kunena, иметь такую карту, на которой можно ставить маркеры только в населенных пунктах.  Да и функционал кнопки "карта" - плачевен. Зачем мучать пользователя вписанием (читай - экспериментами) между терами map? Не ужели нельзя было сделать вполне удобные окошки, как по кнопке "ссылка"?! В одном ввод координат/адреса, во втором - название метки, к примеру.
*

ChaosHead

  • Moderator
  • 5241
  • 451 / 13
Немного поясню. Функционал карт таков, что написав [map]moscow[/map] пользователь получает карту Москвы. Без всяких ключей и лишних действий. Вот и весь функционал.
*

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
Ну что вы, не соглашусь. На карте можно ставить адресные точки. К примеру, написав [map] Краснодар ул. Северная 210[/map] Мы получим карту Краснодара, с маркером на доме №210 по ул. Северной. Причем не важно, на каком языке. Хоть арабской вязью.
Тоже самое произойдет, если мы введем координаты этого дома, например, из навигатора [map]44.ххххх 39.ххххх[/map].



Для этого в файле bbcode и прописано обращение к библиотеке Google Геокодер.
« Последнее редактирование: 19.06.2014, 00:39:42 от Lesha_K »
*

ChaosHead

  • Moderator
  • 5241
  • 451 / 13
Нужен конкретный пример координат где карта уезжает.
Я не знаком с этим API, но меня смущает.
center: latlng
скорее всего там возможно указывать центр карты.
*

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
center: latlng
Это строчка определяет центр отображаемой в сообщении карты, его координаты по умолчанию:
var latlng = new Google.maps.LatLng(37.333586,-121.894684); (Команда открыть новую карту Google с координатами центра ....)
Latitude Longitude (latlng) это принятое обозначение широты/долготы, выражаемое в цифровых значениях разных форматов.
В данном случае это Сан-Хосе. Такая карта в сообщении отображается, если между терами [map] ничего не вписано (нужно же задать понятие, что отображать в данном случае).
Теперь о примерах.
Вот фрагмент интерактивной карты мест падений самолётов ВОВ в Краснодарском крае,  на базе модуля Phoca Maps, который загружает стандартную карту Google, и позволяет размещать на ней маркеры с описанием.



Пардон, под руку попался немецкий самолёт, ну да бог с ним.



В окошке, вверху, есть выделенные зеленым координаты. Именно и они введены в характеристики точки для этой карты и модуля.
Как видим в двух скринах выше, точка находится на крутом склоне горы, выше села Красное, в абсолютно реальном месте.

Теперь вводим эти же координаты в сообщение форума Kunena, кнопкой "Карта", в том же формате [map]44.14772 39.15444[/map]
И вот что получаем в отправленном сообщении:



Как видно, точка убежала прямо на трассу, к окраине села. И так происходит с любыми координатами, если они не относятся к дороге, трассе, населенному пункту. Любая точка в лесу, поле, горах, сразу убегает к населенному пункту или трассе.

Для сравнения, открываем разобычный Google мапс, вводим в поиске те же координаты: 44.14772 39.15444



Получаем точку и маркер, совершенно на правильном месте.

Вывод однозначен. В Куненовской карте, что-то не дописано. Об этом я писал выше.



« Последнее редактирование: 19.06.2014, 14:43:44 от Lesha_K »
*

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
О! Мысль. Сейчас я просмотрю php модуля Phoca Maps.  Допустим, даже по последнему скрину-примеру видно, что на стандартной Google мапс, идет преобразование вводимых координат формата DDD (49.хххххх) в формат DMS (ddd°mm'ss.ss"), что отображается рядом с маркером. Но никак не в адрес. (Что делает вписанная в кунена-карту библиотека Геокодера).
*

ChaosHead

  • Moderator
  • 5241
  • 451 / 13
Я создал тему на офф форуме www.kunena.org/forum/kunena-3-0-support/131003-maps-problem
*

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
Спасибо, мысли читаете. Я и хотел вас об этом попросить, зная, что вы там работаете.
Со своей стороны, продолжаю борьбу именно с php. Потому что совершенно ясно, что в таком отображении точки "виноваты" именно несколько строк прописки и обращению к библиотеке гугл-геокодера.
К примеру, вставьте координаты из постов выше (44.14772 39.15444) в "идеальный" геокодер от Гугла:
http://gmaps-samples.googlecode.com/svn/trunk/geocoder/singlegeocode.html
И получим ту же самую точку на трассе, вместо точки на горе.
*

XaNoy

  • Новичок
  • 1
  • 0 / 0
Решение проблемы нашлось?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не подхватывается файл локализации компонента Kunena v6.0.3

Автор Александр Кардаш

Ответов: 1
Просмотров: 1536
Последний ответ 02.04.2023, 18:12:09
от Александр Кардаш
Нужна помощь в переносе форума с Kunena на wordpress и любой плагин форума

Автор Zoltar22

Ответов: 0
Просмотров: 1258
Последний ответ 19.10.2022, 04:32:49
от Zoltar22
Форум Kunena. нет поля для ввода текста

Автор sarvasvova

Ответов: 2
Просмотров: 1702
Последний ответ 02.08.2022, 09:32:31
от crimeafrend
Kunena при создании новой темы не выводит поле для ввода текста

Автор sarvasvova

Ответов: 0
Просмотров: 3032
Последний ответ 18.11.2021, 00:31:10
от sarvasvova
Консультация по настройке форума

Автор wiwit

Ответов: 7
Просмотров: 1551
Последний ответ 11.11.2021, 14:16:12
от wiwit