Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:development:modules:maps [2015/11/03 14:45]
anton [Обведение района]
abills:docs:development:modules:maps [2018/10/19 14:23] (текущий)
larysa
Строка 1: Строка 1:
 +**''​Страница перенесена в Confluence''​**
 +[[http://​abills.net.ua:​8090/​pages/​viewpage.action?​pageId=9601527]]
 +
 ===== Maps Javascript модули ===== ===== Maps Javascript модули =====
 Скрипты для карт лежат в /js/map/ Скрипты для карт лежат в /js/map/
   * maps.js - Основной скрипт для карт. Отвечает за общую логику и интерфейс для всех типов карт   * maps.js - Основной скрипт для карт. Отвечает за общую логику и интерфейс для всех типов карт
   * maps-google.js - Скрипт реализации интерфейса для Google Maps.   * maps-google.js - Скрипт реализации интерфейса для Google Maps.
-   * maps-google-markers.js - Библиотека для создания основных обьектов карт:+   * maps-google-drawing.js - Библиотека для создания основных обьектов карт:
      * Маркеры      * Маркеры
-     ​* ​[TODO] ​InfoWindows +     * InfoWindows
-     * [TODO] SearchRequests +
- +
-JS - модули построены на модели MVC, что определяет структуру скриптов.+
  
 Каждый JS - модуль карт реализует:​ Каждый JS - модуль карт реализует:​
Строка 69: Строка 69:
 При инициализации карты, создаётся глобальный объект ''​aDistrictPolygoner.''​ \\ При инициализации карты, создаётся глобальный объект ''​aDistrictPolygoner.''​ \\
 Все рассчитанные полигоны сохраняются во внутреннем массиве ''​polygonsArray''​. Все рассчитанные полигоны сохраняются во внутреннем массиве ''​polygonsArray''​.
 +
 +==== Отображение событий на карте ====
 +Модуль Maps при открытой вкладке с картой,​ расширяет AMessageChecker для приёма сообщений с типом ''​MAP_EVENT''​.
 +
 +Формат сообщений:​
 +<​code>​
 +{
 +  "​TYPE":​ "​MAP_EVENT",​
 +  "​OBJECTS":​ [
 +    {
 +      "​ID" ​   : $point->​{id},​
 +      "​MARKER":​ {
 +         "​ID" ​   : $point->​{id},​
 +         "​COORDX" ​  : $point->​{coordy},​
 +         "​COORDY" ​  : $point->​{coordx},​
 +         "​INFO"​ : "<​strong>​$lang{TYPE}</​strong>:​ $point->​{type_name} <br> <​strong>​$lang{NAME}</​strong>:​ $point->​{name}",​
 +         "​TYPE"​ : "​nas_green"​
 +         },
 +       "​LAYER_ID"​ : 6
 +     }
 +  ]
 +}
 +</​code>​
 +
 +Соответсвует формату,​ которым передаются обьекты на карту. Если обьект не имеет установелнного слоя, нужно указывать ''​6''​ (Слой "​Обьекты"​),  ​
 +
 +==== События карты ====
 +Во время загрузки и настройки карты вызываются определённые события.\\
 +Асинхронная обработка реализуется благодаря PubSub модели обьектом ''​Events''​.
 +
 +=== Последовательность событий во время загрузки карты ===
 +^ onbeforemapcreate |Перед загрузкой скриптов карты|
 +^ mapsloaded |Происходит после загрузки внешних скриптов карты|
 +^ layersready |После формирования слоёв карты|
 +^ controlsready |После формирования панели управления (кнопок)|
 +^ mapsconfigured |После настройки карты и обработки дополнительных условий|
 +^ controlblockshowed |Показана панель управления|
 +^ controlblockcached |Ссылки на DOM-элементы кнопок панели управления сохранены в кеш|
 +^ new_point_rendered_%LAYER_ID% |Происходит каждый раз при рендеринге точки слоя|
 +^ billingdefinedlayersshowed |После обработки ''​ObjectsArray''​ (обьекты,​ переданные в странице)|
 +^ layerenabled,​ %LAYER_ID% |После включения слоя, %LAYER_ID% передаётся аргументом функции-обработчику события|
 +^ layerdisabled,​ %LAYER_ID% ||
 +
 +=== Дополнительные события,​ возникающие во время работы ===
 +^ mapsclick, (event) | Возникает каждый раз при клике по карте, координаты можно получить как (event.latLng.lat(),​ event.latLng.lng())|
 +^ savingmapconfig |При закрытии страницы,​ во время сохранения настроек карты|
 +^ clearmapconfig |Перед очисткой сохранённой конфигурации|
 +^ realpositionretrieved,​ position |Получены координаты от браузера клиента|
 +^ realpositionfailed |Произошла ошибка получения координат|
 +
 +=== События редактирования пользовательских слоев ===
 +^ currentmapobjectfinished | При готовности слоя отправлять обьекты (Пользователь подтвердил завершение редактирования)|
 +^ proceedingaddingpoints | (Пользователь не подтвердил завершение редактирования)|
 +^ point_removed_%LAYER_ID% | Отправлен запрос на удаление точки слоя %LAYER_ID% |
 +
 +