Работа с MapWindow GIS. Загрузка карт

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

Здравствуйте, в продолжении темы по работе с MapWindow GIS в Delphi пишу статью о том, как можно загружать карты в свой проект, ну и делать по минимуму операций с ними (увеличивать, перемещаться по карте, очищать карту). В прошлой теме, достаточно долго обсуждалось то, что в Delphi библиотека MapWindow GIS не работает, а точнее когда начинаем загружать карты, то сразу же вылетает ошибка. Подсказали как решить данную проблему — установить фокус на наш компонент, который будет отображать карту (TMap). Скажу сразу, что я фокус не устанавливал и у меня в компиляторе Borland Delphi 7 без фокуса отлично shp-файлы грузились в TMap без всяких ошибок. Но раз такая проблема возникала, то на всякий случай и мы установим фокус, на тот самый случай, чтобы у других пользователей, вдруг ничего не выдало из ошибок. Ну как сделать свою карту я расскажу позже, мы постепенно будем делать свою мини-карту какого-то района. Для данной статьи мы воспользуемся уже готовым примером, в интернете таких карт уже полно, так что скачаем карту любого региона, например Московской области, в Интернете полно готовых shp-файлов карт, которые Вы сможете скачать совершенно бесплатно, но вот можете скачать, например вот такую вот сборку Московской области.

После того как мы скачали файл-карт, shp-файлы, там же и файл баз данных и так далее, нам необходимо создать проект. Создаем проект, устанавливаем на форму компонент TMap с вкладки ActiveX. На данном этапе мы только лишь загрузим нашу карту и отобразим ее, немного по перемещаемся по ней, но не больше того, как рисовать на ней, ставить метки мы будем рассматривать в других статьях. Никаких мы дополнительных модулей не подключаем, далее нам надо создать файл shp, в котором и будет храниться наша карта сама. Это мы сделаем следующим образом

var
 shp:Shapefile;
begin
   shp:=CoShapefile.Create;

Далее мы загружаем наш файл

shp.Open(OpenDialog1.FileName,nil);

Если скачаете какую-то огромную карту, которая будет размером больше 15 мб, не пугайтесь, когда будете ее грузить в проект, если проект на время зависнет, сами понимаете размер не маленький, для этого можно будет использовать потоки, про которые мы также поговорим в следующих статьях. Далее на всякий случай установим фокус нашему компоненту TMap, так как раньше возникали проблемы в некоторых компиляторах при загрузке данных карт. Здесь фокус устанавливается как и на любые другие визуальные компоненты. После этого на наш компонент TMap необходимо добавить новый слой, который и будет отображать содержимое нашей карты. Для этого используется функция AddLayer, у которой 2 параметра:

  • 1 параметр - сам файл карты, который мы будем отображать, это может быть и shp-файд и jpeg-файл, то есть файл-карты
  • 2 параметр - принимает значение True или False в зависимости от того отображать данный слой или нет.

После того как мы добавили слой, нам необходимо его отобразить в своем привычном размере, то есть, чтобы мы видели всею карту, для этого будет использоваться процедура ZoomToMaxExtents. Для того, чтобы вернуться к предыдущему шагу увеличения карты, необходимо использовать функцию ZoomToPrev. Ну вроде бы все по загрузке карт в компонент TMap, остается немного настроить только TOpendialog, чтобы мы могли только видеть shp-файл, зададим ему такой фильтр. Ну, что можете немного поэкспериментировать с картами. Ну да, чуть не забыл, вот весь код, который я написал на событие OnClick кнопки, которая загружает shp-файл и отображает его в TMap.

procedure TForm1.Button1Click(Sender: TObject);
var
 shp:Shapefile;
begin
   try
    if OpenDialog1.Execute then
     begin
      shp:=CoShapefile.Create;
      shp.Open(OpenDialog1.FileName,nil);
      Map1.Focused;//на всякий случай установим фокус
      Map1.AddLayer(shp,true);
      Map1.ZoomToMaxExtents;
     end;
   except
    on e:Exception do
     //-//-//-//-//-//
   end;
end;

Ну вот и все по загрузке shp-файлов, можете искать в Интернете нужную себе карту и загружать и экспериментировать с ней. А дальше мы рассмотрим как можно создать свои shp-файлы, как можно загружать эти файлы в потоках, чтобы приложение не зависало, а также как можно рисовать на слоях TMap и делать нужные нам настройки.

Кстати, хочу Вам сказать, чтобы Ваш сайт был более красочным и красивым рекомендую использовать флеш шаблоны сайта. Под них есть и свои CMS

Не забудьте распаковать архив с shp-файлами, а также файлами баз данных и др.
Исходники статьи можно скачать тут

Facebook Vk Ok Twitter LinkedIn Telegram

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

Всех приветствую, хочу продолжить тему по MapWindow GIS в Delphi, а на этот раз хотелось бы поговорить о новой версии, которая вышла совсем недавно в июне, данного года, последняя версия сборки 4.8.2. Скачать можно с официального сайта MapWindow GIS, благо дан...
Всем привет, продолжаем тему с MapWindow GIS, а в особенности рассматриваем тему, которая посвящена именно выходу новой версии MapWindow GIS в виде ActiveX-компонента, в которой появилось достаточно много изменений, о которых (о некоторых) я вспоминал в данной...
Всем привет, данная статья будет посвящена — двум географическом-информационным системам: Яндекс.Карты совместно с MapWindow GIS в Delphi. Яндекс.Карты мы уже использовали в своих проектах, и рассматривали их (Static Api), теперь попробуем совместить эти два д...