Всех приветствую, хочу продолжить тему по MapWindow GIS в Delphi, а на этот раз хотелось бы поговорить о новой версии, которая вышла совсем недавно в июне, данного года, последняя версия сборки 4.8.2. Скачать можно с официального сайта MapWindow GIS, благо данная ГИС и все ее компоненты бесплатны.

Не забудьте удалить старую версию MapWindow GIS, а после этого начинайте устанавливать последнюю, скаченную версию, в которой достаточно много обновлений.

Теперь, давайте пробежимся немного по нововведениям:

  1. При запуске проекта, теперь, открытый пользователем, слой будет случайным образом принимать цвет (в старой версии был один и тот же цвет, светло-желтый).
  2. Теперь, напрямую можно создавать метки в shape-файле, да и еще в очень красивой цветовой гамме (в этой статье, мы это и рассмотрим)
  3. был изменен ряд функций и свойств различных объектов, которые постепенно, мы будем рассматривать в последующих статьях.

Я еще в новой версии сильно не разбирался, сразу, что захотелось опробовать — метки, с новой цветовой гаммой, которое должно понравиться многим, данного эффекта можно было достичь и в старой версии, но было бы намного труднее, чем сейчас.

Теперь перейдем к нашему проекту в Delphi. Установите компонент TMap на форму, я его буду создавать в режиме run-time, ну и кнопку установим на форму, чтобы по нажатию на нее, загружался наш слой, на нем размещались метки и данный слой отображался в компоненте TMap.

Преимущество данного метода размещения меток заключается в том, что нам не обязательно знать в каком поле размещены название объектов карты и напрямую считывать их с файла атрибутов (нам только необходимо знать номер поля, а название необязательно и дополнительно считывать с файла атрибутов).

Ну что, теперь напишем код, на событие OnClick нашей кнопки, а потом по-тихоньку начнем его разбирать.

procedure TForm1.btn1Click(Sender: TObject);
var
  shp:IShapefile;
  sheme:IColorScheme;
  i:integer;
  mp:TMap;
begin
   try
     if dlgOpen1.Execute then
      begin
       shp:=CoShapefile.Create;
       shp.Open(dlgOpen1.FileName,nil);
       shp.Labels.FrameVisible:=True;
       shp.GenerateLabels(1,lpCentroid,true);
       if shp.Labels.GenerateCategories(0,ctNaturalBreaks,5) then
        begin
          shp.Labels.ApplyCategories;
          sheme:=CoColorScheme.Create;
          sheme.SetColors2(Orange,LemonChiffon);
          shp.Labels.ApplyColorScheme2(ctSchemeGraduated,sheme,leFrameBackground);
        end;
         mp:=TMap.Create(Form1);
         mp.Width:=500;
         mp.Height:=250;
         mp.Visible:=True;
         mp.Parent:=Form1;
         mp.SetFocus;
        mp.AddLayer(shp,TRUE);
        for i:=0 to shp.NumShapes do
         mp.ShapeLayerLineColor[0]:=clRed;
        mp.ZoomToMaxExtents;
      end
     else
      exit;
   except
     on e:Exception do
   end;
end;

Как видите, у объектов интерфейса IShapefile появилось новое свойство Labels, с помощью которого мы и будем задавать начальные настройки для отображения наших меток на слое. С помощью свойства FramVisible задаем, что параметры меток, будут использованы всеми категориями.

Дальше, с помощью функции GenerateLabels, мы генерируем метки, то есть указываем номер поля, в котором расположены название объектов, затем указываем их расположение.

Дальше, с помощью функции GenerateCategories, мы создаем категории, после чего создаем цветовую схему, она может быть любой, и дальше с помощью процедуры ApplyColorScheme2 мы применяем нашу схему, к нашим меткам, на конце процедуры 2, так как существуют еще 2 таких метода, которые применяются к отдельным частям меткам, данный метод применяет цветовую схему к шрифту и рамке, где находится сама метка.

Кроме этого, меткам можно вручную задавать имя шрифта, начертание, стиль, цвет и так далее, это делается в свойствах, которые начинаются на Font

Дальше, все знакомо, отображаем с метками наш слой, в компоненте TMap. Вот такие вот получаются метки:

Ну, а исходник можно скачать тут (IDE Delphi 7).


В настоящее время каждый руководитель хочет очень качественно для своего коллектива организовать корпоратив. Но если его организовывать самому, то придется очень много тратить своего времени, и то не факт, что получиться очень качественно. А, если Вы закажите организацию корпоративных праздников, в Киеве у профессионалов, то Вы получите незабываемый праздник.


Метки: , , , ,




К записи “Работа с MapWindow GIS. Новая версия 4.8.2. Работа с метками” оставлено комментариев: 13.

  1. [...] Всем привет, продолжаем тему с MapWindow GIS, а в особенности рассматриваем тему, которая посвящена именно выходу новой версии MapWindow GIS в виде ActiveX-компонента, в которой появилось достаточно много изменений, о которых (о некоторых) я вспоминал в данной теме. [...]

  2. Александр:

    выдает ошибку в этой строке
    shp.Labels.FrameVisible:=True;
    access violation….в модуле map***.ocx

    Версию ActivX обновил с офсайта.
    Теже shp загружаю в их desctop все без проблем Label создаются и управляются…

  3. Piligrim:

    Пробывал.
    На следующей тоже самое…
    Проделал следующее:
    1) загрузил этот слой в Decktop
    2) создал Label’ы там
    3) загрузил снова в свою программу-без проблем все строчки кода отработали

  4. Александр:

    нет

  5. Дима:

    Почему в новой версии не работает ShapeLineColor, а цвет всего слоя можно изменить ShapeLayerLineColor.

  6. Алексей:

    Подскажите как перейти с 4.7 на 4.8.2? Не могу поставить ни как

  7. [...] Работа с MapWindow GIS. Новая версия 4.8.2. Работа с метками [...]

Оставить комментарий на Andrey

Вы можете использовать следующие теги:

*