Геокарта
Модуль относится к части 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».
Каждый бэкенд может иметь свои настройки. Например, для Яндекс.Карты настраивается центр карты и масштаб.
База данных
Файлы
modules/geomap/admin/geomap.admin.php – настройки модуля;
modules/geomap/admin/geomap.admin.inc.php – подключение модуля к административной части других модулей;
modules/geomap/backend/google/geomap.google.admin.php – настройки карты "Google Maps" для административного интерфейса;
modules/geomap/backend/google/geomap.google.view.add.php – шаблон редактирования точки на карте "Google Maps";
modules/geomap/backend/google/geomap.google.view.get.php – шаблон точки на карте "Google Maps";
modules/geomap/backend/google/geomap.google.view.get_all.php – шаблон вывода нескольких точек на карте "Google Maps";
modules/geomap/backend/yandex/geomap.yandex.admin.php – настройки карты «Яндекс.Карты» для административного интерфейса;
modules/geomap/backend/yandex/geomap.yandex.view.add.php – шаблон редактирования точки на карте Яндекс.Карты;
modules/geomap/backend/yandex/geomap.yandex.view.get.php – шаблон точки на карте Яндекс.Карты;
modules/geomap/backend/yandex/geomap.yandex.view.get_all.php – шаблон вывода нескольких точек на карте Яндекс.Карты;
modules/geomap/geomap.php – контроллер;
modules/geomap/geomap.inc.php – подключение модуля;
modules/geomap/geomap.install.php – установка модуля;
modules/geomap/geomap.model.php – модель;
modules/geomap/views/geomap.view.show.php – шаблон вывода нескольких точек на карте.
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.