Улучшения компонента

  • dtvims
  • Topic Author
  • Offline
  • New Member
  • New Member
More
12 years 7 months ago #288 by dtvims
В ходе своих доработок возникли идеи по доработке. Для себя я что-то уже сделал и с нетерпением ждуновой версии компонента, чтобы уже ковыряться с ним.
1. Не совсемпонятно какие именно будут изменения в новой версии, может что-то уже будет учтено.
2. Ранее я писал, что в joomla используется библиотека mootools - нафиг ее, так как не работают некоторые фичи в firefox 11 (в более ранних версиях не проверял). Надо все-таки использовать ajax.
3. Появилась идея сделать настраиваемыми доп. атрибуты в настройках карты, т.е. создали карты и там редактируем атрибуты и их вывод и редактирование в метках. Необходимы 3 свойства на каждый атрибут (в идеале вообще атрибуты динамическими сделать, но я не об этом): Название поля; Тип поля (если не задан, значит атрибут выключен); Значения по умолчанию/Варианты значений через ";". Тип поля - это input, select, Editable select (прикольная штука делается на базе ajax).
4. В текущий момент есть неудобсва по созданию новых пользовательских меток, см. "/components/com_zhyandexmap/views/zhyandexmap/tmpl/default.php".
4.1. Шаблоны для метки необходимо править в 3-х местах - это создание, редактирование и просмотр.
Предлагаю все вынести в одно место создав функцию на JavaScript возвращающую необходимый шаблон.
Я для себя вынес из переменной $functionText создание JS переменной contentInsertPlacemark и заменил ее там на функцию (Передаю только смысл):
Code:
function contentInsertPlacemark(current) { var res='Форма для новой метки'+ if (current){'; res += 'lng:'+current.getLng() + '<br />lat:'+current.getLat(); }; Return res; }
И использую затем вот так (просто минимальные изменения кода):
Code:
$functionText1 = ''; $functionText1 .= 'insertPlacemark.setGeoPoint(current);' ."\n"; $functionText1 .= 'insertPlacemark.setBalloonContent(contentInsertPlacemark(current));'."\n"; //функция contentInsertPlacemark(current) должна быть глобальной, поэтому выносим в начало скрипта $scripttext = $functionText . $scripttext; $scripttext .= 'YMaps.Events.observe(insertPlacemark, insertPlacemark.Events.Drag, function (obj) {' ."\n"; $scripttext .= ' var current = obj.getGeoPoint().copy();' ."\n"; $scripttext .= $functionText1; $scripttext .= '});' ."\n";
4.2. Добавлять метки передвигая одну из центра не удобно. Удобно вбить адрес в поиск и с помощью созданного балуна создаем новую метку по шалону как в п.4.1.
Для этого в функцию showAddressByGeocoding добавляем по условию, что пользователь может добавлять метки следующий код (часть старого, чтобы понятно было что и куда):
Code:
$scripttext .= ' geoResult = this.get(0);' ."\n"; $scripttext .= ' geoResult.setOptions({draggable: true});' ."\n"; $scripttext .= ' map.addOverlay(geoResult);' ."\n"; $scripttext .= ' map.setBounds(geoResult.getBounds());' ."\n"; // add route if (isset($this->item->findroute) && (int)$this->item->findroute == 1) { $scripttext .= ' getMyMapRoute(geoResult.getGeoPoint()); '."\n"; } // end add route $scripttext .= ' var current = geoResult.getGeoPoint().copy();' ."\n"; $scripttext .= ' geoResult.setBalloonContent(contentInsertPlacemark(current));'."\n"; // Далее еще надо описать события на перетаскивание и открытие балуна, если есть необходимость.
В идеале еще сделать добавление новой метки по клику на карту, т.е. Нажал на кнопочку, установилось разовое событие на клик карты, чтобы пользователь кликнул на карту и там поставилась новая метка.

Please Log in or Create an account to join the conversation.

More
12 years 7 months ago #289 by Dima
Клик на карте работает.

Если включите Поиск через геокодирование (на свойствах карты Find Control (geocoding))
то сможете искать адрес, и кликая в том месте где хотите ставить метку.

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

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

Изменения как раз касаются формирования структуры для ввода и изменения и т.п., в том числе уже не будет $functionText

Don't forget support my developments: post review in JED , donate , help with translation ;)

Please Log in or Create an account to join the conversation.

More
12 years 7 months ago - 12 years 7 months ago #435 by z00m
Надеюсь никто не будет против, если я тут продолжу тему улучшений...

Дмитрий, почему бы не сделать так что б при включении "Ввод маркеров пользователями" не отображалось инфо "Вы не вошли в систему" или "Вы вошли в систему как ..."
Ну на крайний случай заключить эти строчки в отдельный див, что б можно было их не отображать при display:none;
В некоторых ситуациях немного лишняя инфа на мой взгляд...
Last edit: 12 years 7 months ago by z00m.

Please Log in or Create an account to join the conversation.

More
12 years 7 months ago #437 by z00m
Еще один момент... Если "Управление группами меток" = слева, справа, внизу, вверху, то карта (#YMapsID) и список меток (#YMapsMenu-external) помещаются в таблицу между дивами #YMapInfoHeader и #YMapInfoFooter.
Неплохо было бы добавить в тег <table> параметры: border="0" cellspacing=0 cellpadding=0
А то появляются отступы в 1px.

Please Log in or Create an account to join the conversation.

More
12 years 7 months ago #438 by Dima
Я добавлю класс к тегу таблицы, думаю это решит проблемы, т.к. бордеры тянутся из шаблона

Don't forget support my developments: post review in JED , donate , help with translation ;)

Please Log in or Create an account to join the conversation.

More
12 years 7 months ago #448 by Dima

z00m wrote: Дмитрий, почему бы не сделать так что б при включении "Ввод маркеров пользователями" не отображалось инфо "Вы не вошли в систему" или "Вы вошли в систему как ..."
Ну на крайний случай заключить эти строчки в отдельный див, что б можно было их не отображать при display:none;
В некоторых ситуациях немного лишняя инфа на мой взгляд...


После отпуска я буду вносить изменения - создавать некоторые настройки со стороны BackEnd, это и вывод attribute-полей (полей кастомизации) в тело всплавающего окна, так и конфигурирование того, что выводится при вводе пользовательских меток. Сделаю и это.

Don't forget support my developments: post review in JED , donate , help with translation ;)

Please Log in or Create an account to join the conversation.

Time to create page: 0.217 seconds
Powered by Kunena Forum