Всем привет, данная статья будет посвящена — двум географическом-информационным системам: Яндекс.Карты совместно с 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-изображениями.

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

Исходник статьи, скачиваем тут


If you suffer from transpiration excessive and it can not do anything, it is best to begin treatment immediately.


Все статьи по MapWindow GIS на моем блоге:

  1. Работа с MapWindow GIS. Обзор
  2. Работа с MapWindow GIS. Загрузка карт
  3. Работа с MapWindow GIS. Проекция карт
  4. Работа с MapWindow GIS. Настройки TMap
  5. Работа с MapWindow GIS. Конвертация Яндекс.Карт в Shape-файл
  6. Работа с MapWindow GIS. Работа со слоями
  7. Работа с MapWindow GIS. Работа с таблицами атрибутов
  8. Работа с MapWindow GIS. Загрузка растровых изображений. Тип Image
  9. Работа с MapWindow GIS. Выделение отдельных областей слоя
  10. Работа с MapWindow GIS. Static API+MapWindow GIS

Метки: , , , , ,




К записи “Работа с MapWindow GIS. Static API+MapWindow GIS” оставлено комментариев: 8.

  1. ZeUs:

    Расскажите в следующих статьях как рисовать на картах фигуры, пожалуйста

  2. Maringo:

    Что давно не было новых статей о MapWindow. С нетерпением жду продолжения))!!

    • Andrey53:

      готовится статья, по созданию shp-файлов, но проблема в том, что сейчас буду занят, по возможности опубликую

  3. NULL:

    Ну когда же уже будет статья)))?

  4. ZeUs:

    Что то давно нет новых статьей :-(

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

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*