Maps / Произвольные типы точек

Добаление произвольных типов для точек на карте.

Иконки хранятся в \cgi-bin\styles\default_adm\img\maps\.

Для добавления собственных иконок, в config.pl добавить

  @MAPS_CUSTOM_ICONS = ('icon1', 'icon2');

Сами иконки должны в названии иметь постфикс _green.png (_white.png, _red.png), для того, чтоб система различала их по цвету.
Например, для добавления значка tree.png, необходимо добавить значки в всех цветах: tree_green.png, tree_red.png и т.д. (Обязательный только цвет green);

Отображение карты с собственными значками в других модулях

Добаляем тип в базу, если нет

use Maps;
  my $Maps = Maps->new($db, $admin, \%conf);
  
  # Добавляем тип если нет
  $Maps->type_add({
      NAME       => 'Custom type name',
      COMMENTS   => 'Comments',
      ICON       => 'custom_icon1'
  });

Или в .sql файле модуля

INSERT INTO maps_point_types (`name`, `icon`) VALUES
  ('custom_type', 'custom_icon1');

Добавляем свои координаты в базу

  use Maps;
  my $Maps = Maps->new($db, $admin, \%conf);
  
  # Получаем тип
  my $types_list = $Maps->types_list({ ID => '_SHOW', NAME => 'custom_type', COLS_NAME => 1 });
  
  my $type_id = -1;
  if ($types_list && scalar $types_list > 0){
    $type_id = $types_list->[0]->{id};
  }
  
  if ($type_id == -1){
    Добавляем тип как показано выше
    
    $type_id = $Maps->{INSERT_ID};
  }
  
  if ($type_id > 0){
    $Maps->custom_point_add({
       COORDX => '12.23',
       COORDY => '24.25',
       TYPE   => $type_id  
    });
  

Заранее залить иконку в \cgi-bin\styles\default_adm\img\maps\ с нужными названиями. По умолчанию используется цвет green, поэтому иконка этого цвета должна обязательно присутствовать.

Добавляем в @MAPS_CUSTOM_ICONS свои иконки.

  push(@MAPS_CUSTOM_ICONS, 'custom_icon1', 'custom_icon2');


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

Показываем карту через maps_show_poins()

# Устанавливаем флаг отображения кастомных точек
$FORM{CUSTOM_POINTS} = 1;

# Подгружаем модуль Maps
load_module('Maps', $html);

# Показываем карту
maps_show_poins();