Работа с MapWindow GIS. Static API+MapWindow GIS

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

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

Давайте поговорим по поводу первого метода. Данный метод очень прост — мы просто посылаем запрос на получение карты-картинки и сохраняем его в Stream, после чего мы его сохраняем в файл, а затем в самый последний момент, данный файл мы уже загружаем и отображаем в TMap.

Данный метод не самый лучший, так как мы очень много лишних действий делаем. Необходимо сохранить Stream в файл, затем этот файл загрузить, по окончанию работы программы, можно этот файл еще и удалить. Так, что тут, как вариант можно использовать данный метод.

Но на благо имеется отличный тип данных Utils, который поможет нам все сделать без временных файлов. Мы просто преобразуем bmp в Picture, который и поможет сразу загрузить и отобразить изображение в компонент TMap.

Да, так как мы получаем изображение карты в формате png или jpg, то мы еще преобразуем сперва в bmp, но тут тоже нам труда это не составит.

Ну, давайте приступим. В проекте Static API я создал, еще одну форму и на ней разместил компонент TMap, а на главную форму еще добавил TButton, по нажатию на которую, мы будем конвертировать наши изображения и отображать их в компоненте TMap.

На событие нашей новой формы — OnShow, я написал следующий код:

procedure TForm2.FormShow(Sender: TObject);
var
 UTL:Utils;
 img:Image;
 bmp:TBitmap;
begin
   bmp:=TBitmap.Create;
   bmp.Assign(Form1.png);
   UTL:=CoUtils.Create;
   img:=CoImage.Create;
   img.Picture:=UTL.hBitmapToPicture(bmp.Handle);
   Map1.AddLayer(img,True);
   bmp.Free;
end;

Немного поговорим о данном типе, и о данной функции:

  • функция hBitmapToPicture(hBitmap:Integer):IPictureDisp

Конвертирует hBitmap в Picture-объект, который мы потом отображаем в компоненте TMap. Как Вы видите, то мы передаем Handle нашего HBitmap.

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

Ну, да и мы видим, что сперва, когда мы получаем png-изображение, то мы сразу его пересохраняем в bmp, так как данная функция позволяет работать только с bmp-изображениями.

Так, что смело можно говорить, что у нас уже статические карты — превращаются в интерактивные, по ним уже тоже можно перемещаться и увеличивать.

Facebook Vk Ok LinkedIn Telegram

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

Всех приветствую, хочу продолжить тему по MapWindow GIS в Delphi, а на этот раз хотелось бы поговорить о новой версии, которая вышла совсем недавно в июне, данного года, последняя версия сборки 4.8.2. Скачать можно с официального сайта MapWindow GIS, благо дан...
Ну что, продолжаем экспериментировать с различными API, на этот раз «перст» пал на Яндекс. Здесь мы рассмотрим как в своих проектах можно использовать Яндекс карты без программирования на JavaScript или динамической загрузки страницы.  Смысле Static API Яндекс...
Не долго пришлось ждать следующей статьи — про MapWindow GIS в Delphi, а тема ее — Работа с таблицами атрибутов, а точнее, работа, с тем самым, файлом dbf. Вообще, как Вы догадались возможно раньше, что приложен файл dbf - к shp-файлу не с проста. Вообще, если...