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

4 минуты на чтение

Всех приветствую, хочу продолжить тему по 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).

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

И снова здравствуйте, довольно много времени прошло с момента последней публикации по теме MapWindow GIS в Delphi и хочу сказать, что за этот период довольно много изменилось в самой MapWindow GIS. Вышла новая версия, в которой довольно много изменений, а еще ...
Всем привет, продолжаем тему с MapWindow GIS, а в особенности рассматриваем тему, которая посвящена именно выходу новой версии MapWindow GIS в виде ActiveX-компонента, в которой появилось достаточно много изменений, о которых (о некоторых) я вспоминал в данной...
Всем доброго времени суток. Давненько я не писал ничего про MapWindow GIS в Delphi. Может оно и к лучшему, так как летом вышла очередная новая версия данного ActiveX-компонента, в которой наконец-то появилась поддержка Google-карт. Мы уже с Вами рассматривали ...