Геокарта

Модуль относится к части CMS «Интерактив» и может быть установлен опционально.

Модуль «Геокарта» подключается к другим модулям. В стандартной комплектации DIAFAN.CMS «Геокарта» подключен к модулю «Объявления». В рамках модуля карта подключается в настройках конкретного модуля.

Модуль позволяет отмечать точки на карте для элементов другого модуля. Одному элементу соответствует одна точка. Если подключить модуль к странице сайта, то можно вывести все точки на одной карте. GET-переменная module выводит точки только для выбранного модуля.

Пример:

Модуль «Геокарта» подключен к модулям «Статьи» и «Объявления». Создана страница «Геокарта» http://site.ru/geomap/. На этой странице будет выведена карта с точками всех модулей: и статей, и объявлений. Страница http://site.ru/geomap/?module=ab покажет только точки объявлений.

Подключение

Подключаемая часть – файл modules/geomap/geomap.inc.php. В нем описан класс Geomap_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_geomap. Экземпляр класса создается при первом вызове переменной.

Структура бэкенда

К модулю можно подключить неограниченное количество бэкендов – модулей для работы с конкретными картами.

Для этого нужно разработать несколько файлов станадартной структуры, учитывающие особенности API карт и положить папку с этими файлами в папку geomap/backend. Бэкенд появиться в административной части модуля «Геокарта» и будет доступен к выбору.

Бэкенд должен иметь уникальное название латинскими буквами (по примеру yandex, google, 2gis). Для примера будем использовать название newmap.

В папке geomap/backend/newmap должны находиться следующие файлы:

  • gemap.newmap.admin.php
  • gemap.newmap.view.add.php
  • gemap.newmap.view.get.php
  • gemap.newmap.view.get_all.php

Рассмотрим структуру стандартных файлов

gemap.newmap.admin.php

Файл содержит название и настройки бэкенда, подгружаемые при выборе его из списка.

Структура файла:

Пример:

// ошибка 404 при прямом вызове файлов
if (! defined('DIAFAN'))
{
    
$path = __FILE__;
    while(!
file_exists($path.'/includes/404.php'))
    {
        
$parent = dirname($path);
        if(
$parent == $path) exit;
        
$path = $parent;
    }
    include
$path.'/includes/404.php';
}

class
Geomap_newmap_admin
{
    public
$config;
    private
$diafan;

    public function
__construct(&$diafan)
    {
        
$this->diafan = &$diafan;
        
$this->config = array(
            
"name" => 'Название, выводимое администратору',
            
"params" => array(
                
// название настройки должно начинаться с названия метода
                
'newmap_string' => 'Название',

                
// если настройка не строковая, то вместо названия указываем массив с названием и типом
                // доступны следующие типы: text - строка, checkbox - галочка
                
'newmap_checkbox' => array(
                    
'name' => 'Тестовый режим',
                    
'type' => 'checkbox'
                
),

                
// можно определить свою функцию для вывода поля и его сохранения
                
'newmap_var' => 'Название',
            )
        );
    }

    
/**
     * Своя функция на редактирования настройки newmap_var
     *
     * @return void
     */
    
public function edit_variable_newmap_var()
    {
        echo
'<div class="unit tr_geomap" backend="paymenthod" style="display:none">
            <div class="infofield">Название поля</div>
            Значение поля
        </div>'
;
    }

    
/**
     * Своя функция на сохранение настройки newmap_var
     *
     * @return void
     */
    
public function save_variable_newmap_var()
    {
        
// сохраняет данные
    
}
}

gemap.newmap.view.add.php

Шаблон редактирования точки на карте.

В шаблоне доступны следующие данные:

  • $result["point"] – координаты точки.
  • $result["config"] – массив с настройками бэкенда.

gemap.newmap.view.get.php

Шаблон вывода точки на карте без возможности редактирования.

В шаблоне доступны следующие данные:

  • $result["point"] – координаты точки.
  • $result["config"] – массив с настройками бэкенда.

gemap.newmap.view.get_all.php

Шаблон вывода нескольких точек на карте.

В шаблоне доступны следующие данные:

  • $result["rows"] – массив точек.
  • $result["config"] – массив с настройками бэкенда.

Как добавлять геокарта к модулю

В настройках модуля (modules/модуль/admin/модуль.admin.config.php) и в файле редактирования элементов модуля (modules/модуль/admin/модуль.admin.php) необходимо добавить параметр 'geomap':

public $variables = array(
    
'main' => array(
        
'geomap' => 'module',
        

    
),
    

);

Административная часть

В административной части модуля можно выбрать бэкенд – сервис, используемый для отображения карты. В стандартную сборку DIAFAN.CMS включены бэкенды «Яндекс.Карты» и «Google.Map».

Каждый бэкенд может иметь свои настройки. Например, для Яндекс.Карты настраивается центр карты и масштаб.

База данных

Файлы

  1. modules/geomap/admin/geomap.admin.php – настройки модуля;

  2. modules/geomap/admin/geomap.admin.inc.php – подключение модуля к административной части других модулей;

  3. modules/geomap/backend/google/geomap.google.admin.php – настройки карты "Google Maps" для административного интерфейса;

  4. modules/geomap/backend/google/geomap.google.view.add.php – шаблон редактирования точки на карте "Google Maps";

  5. modules/geomap/backend/google/geomap.google.view.get.php – шаблон точки на карте "Google Maps";

  6. modules/geomap/backend/google/geomap.google.view.get_all.php – шаблон вывода нескольких точек на карте "Google Maps";

  7. modules/geomap/backend/yandex/geomap.yandex.admin.php – настройки карты «Яндекс.Карты» для административного интерфейса;

  8. modules/geomap/backend/yandex/geomap.yandex.view.add.php – шаблон редактирования точки на карте Яндекс.Карты;

  9. modules/geomap/backend/yandex/geomap.yandex.view.get.php – шаблон точки на карте Яндекс.Карты;

  10. modules/geomap/backend/yandex/geomap.yandex.view.get_all.php – шаблон вывода нескольких точек на карте Яндекс.Карты;

  11. modules/geomap/geomap.php – контроллер;

  12. modules/geomap/geomap.inc.php – подключение модуля;

  13. modules/geomap/geomap.install.php – установка модуля;

  14. modules/geomap/geomap.model.php – модель;

  15. modules/geomap/views/geomap.view.show.php – шаблон вывода нескольких точек на карте.

Ваши комментарии и дополнения
03 июля 2018 г.
Здравствуйте
А в этом модуле можно как-то через интерфейс админки добавить несколько меток (балунов) не прибегая к модулям "Статьи" или "Объявления".
Допустим я закрепил этот модуль на страничке "Контакты", но у компании фактических адресов 2,3 .. - сколько угодно может быть. И хочется их все отобразить на этой карте и добавлять через админку простым перетаскиванием (как сейчас и работает в случае с одним балуном).
Такое реально ?)

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.