Скрипты для карт лежат в /js/map/

Каждый JS - модуль карт реализует:

Переход к точке

Параметры: &COORDX=xx.xxxxx&COORDY=yy.yyyyyy 
После создания карты, переход в заданную точку с установкой маркера.

При заданном параметре &TITLE=string маркеру присваивается поле title и infoWindow c контентом, дублирующим title, если не задан &CONTENT=html_string.
При заданном &CONTENT=html_string маркеру присваивается infoWindow с контентом, который передается в параметре. 

Поиск

Поиск работает с Google Locations API в случае использования Google Maps.
Поиск ведётся относительно координаты в переменной mapCenterLatLng. Возможные варианты установки переменной:

Если ни один из этих параметров не задан, вызывается метод goToRealPosition(), который оправляет запрос получения текущих координат пользователя, при успешном ответе центрирует карту в полученных координатах и устанавливает mapCenterLatLng в этой точке.

Поиск локаций по ключевым словам

Параметры: &search_query='query1;query2' , где query1query2 ключевые слова для поиска для поиска.

Произойдёт отправка запроса на поиск по query1, потом отправка запроса на поиск по query2.

Для задания иконки маркера результатов поиска, необходимо передать параметр ICON. ICON может задаваться как:

При поиске по ключевым словам в нижней части InfoWindow маркера, указывается адрес. При клике вызывается метод createNavigationRoute(origin, destination) с параметрами mapCenterLatLng и координатами последнего открытого infoWindow соответственно.

Поиск по типам

Параметры: &search_type='atm,bank' , где atm, bank типы объектов. 
Типы объектов для поиска можно посмотреть здесь : 
Google Developers: Типы, которые можно использовать при поиске и добавлении мест

Визуализация объектов

Точечные объекты - содержат только одну координату. Сюда входят:

Маркеры

Маркерами отображаются:

Маркеры создаются с помощью объекта AMarkerBuilder.

Обведение района

Для обведения района по крайним точкам используется объект ADistrictPolygoner;
Методы:

addBuild(districtId, latLng)latLng = {lat: Number, lng: Number}. Вызов сбрасывает флаг computed.
compute()Вычисляет полигоны для добавленных точек. Вызов сбрасывает выполняет hidePolygons() и сбрасывает polygonsArray
showPolygons()Показывает рассчитанные полигоны. Если не был вызван compute(), рассчитает полигоны.
hidePolygons()Прячет полигоны, не изменяет внутреннюю структуру
toggle()Включает, если полигоны спрятаны и наоборот

При инициализации карты, создаётся глобальный объект aDistrictPolygoner

Все рассчитанные полигоны сохраняются во внутреннем массиве polygonsArray.

Отображение событий на карте

Модуль Maps при открытой вкладке с картой, расширяет AMessageChecker для приёма сообщений с типом MAP_EVENT.

Формат сообщений:

{
  "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
     }
  ]
}

Соответствует формату, которым передаются объекты на карту. Если объект не имеет установленного слоя, нужно указывать 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%