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

  • dtvims
  • Topic Author
  • Offline
  • New Member
  • New Member
More
12 years 6 days 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 и заменил ее там на функцию (Передаю только смысл):
function contentInsertPlacemark(current) {
 var res='Форма для новой метки'+ 
 if (current){';
    res += 'lng:'+current.getLng() + 
    '<br />lat:'+current.getLat(); 
 };
 Return res;
}
И использую затем вот так (просто минимальные изменения кода):
$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 добавляем по условию, что пользователь может добавлять метки следующий код (часть старого, чтобы понятно было что и куда):
$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 6 days 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
11 years 11 months ago - 11 years 11 months ago #435 by z00m
Надеюсь никто не будет против, если я тут продолжу тему улучшений...

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

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

More
11 years 11 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
11 years 11 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
11 years 11 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.148 seconds

Donate


Go to top