Всех приветствую, хочу продолжить тему по MapWindow GIS в Delphi, а на этот раз хотелось бы поговорить о новой версии, которая вышла совсем недавно в июне, данного года, последняя версия сборки 4.8.2. Скачать можно с официального сайта MapWindow GIS, благо данная ГИС и все ее компоненты бесплатны.
Не забудьте удалить старую версию MapWindow GIS, а после этого начинайте устанавливать последнюю, скаченную версию, в которой достаточно много обновлений.
Теперь, давайте пробежимся немного по нововведениям:
- При запуске проекта, теперь, открытый пользователем, слой будет случайным образом принимать цвет (в старой версии был один и тот же цвет, светло-желтый).
- Теперь, напрямую можно создавать метки в shape-файле, да и еще в очень красивой цветовой гамме (в этой статье, мы это и рассмотрим)
- был изменен ряд функций и свойств различных объектов, которые постепенно, мы будем рассматривать в последующих статьях.
Я еще в новой версии сильно не разбирался, сразу, что захотелось опробовать — метки, с новой цветовой гаммой, которое должно понравиться многим, данного эффекта можно было достичь и в старой версии, но было бы намного труднее, чем сейчас.
Теперь перейдем к нашему проекту в 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 таких метода, которые применяются к отдельным частям меткам, данный метод применяет цветовую схему к шрифту и рамке, где находится сама метка.
Дальше, все знакомо, отображаем с метками наш слой, в компоненте TMap. Вот такие вот получаются метки:
Ну, а исходник можно скачать тут (IDE Delphi 7).
В настоящее время каждый руководитель хочет очень качественно для своего коллектива организовать корпоратив. Но если его организовывать самому, то придется очень много тратить своего времени, и то не факт, что получиться очень качественно. А, если Вы закажите организацию корпоративных праздников, в Киеве у профессионалов, то Вы получите незабываемый праздник.
Похожие записи
Метки: MapWindow GIS, MapWindow GIS в Delphi, MapWindowGIS, Shape, TMap
[...] Всем привет, продолжаем тему с MapWindow GIS, а в особенности рассматриваем тему, которая посвящена именно выходу новой версии MapWindow GIS в виде ActiveX-компонента, в которой появилось достаточно много изменений, о которых (о некоторых) я вспоминал в данной теме. [...]
выдает ошибку в этой строке
shp.Labels.FrameVisible:=True;
access violation….в модуле map***.ocx
Версию ActivX обновил с офсайта.
Теже shp загружаю в их desctop все без проблем Label создаются и управляются…
а эту строчку пробовал опустить?
какая версия у Вас показывается именно при импорте библиотеки?
Пробывал.
На следующей тоже самое…
Проделал следующее:
1) загрузил этот слой в Decktop
2) создал Label’ы там
3) загрузил снова в свою программу-без проблем все строчки кода отработали
сам модуль компонента вручную не редактировали?
какая версия Delphi у Вас?
нет
Почему в новой версии не работает ShapeLineColor, а цвет всего слоя можно изменить ShapeLayerLineColor.
в том и суть новых версий, что-то добавлять, что-то изменять
Подскажите как перейти с 4.7 на 4.8.2? Не могу поставить ни как
необходимо удалить старую версию и точно также импортировать новую, вот и все
[...] Работа с MapWindow GIS. Новая версия 4.8.2. Работа с метками [...]