Работа с MapWindow GIS. Настройки TMap

5 минут на чтение


Всем привет, тут хотелось бы поговорить о том, как можно сделать небольшие и самые нужные настройки в компоненте TMap. Ну, например, такие настройки, как перемещение по карте, увеличение, получение координат указателя мыши на карте. Статья получиться не сильно большой, но зато, в следующей статье, мы уже наконец-то приступим к тому: как разукрашивать границы карты (слоя); как разукрашивать, по-отдельности, регионы слоя (карты); как наносить на карту (слой) изображения, метки, текст; для чего нужен файл *.dbf; получения информации из данного файла и многое другое. В общем чем дальше, тем веселее будет.

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

procedure TForm1.Map1MouseMove(ASender: TObject; Button, Shift: Smallint;
  x, y: Integer);
var
 XX,YY:double;
begin
  Map1.PixelToProj(x,y,XX,YY);
  StatusBar1.Panels[0].Text := 'Lat='+FloatTostr(XX);
  StatusBar1.Panels[1].Text := 'Long='+FloatTostr(YY);
end;

С помощью процедуры PixelToProj мы преобразуем координаты мыши в географические и я их вывожу на строку состояния (Вы можете выводить куда угодно):

Внимание!!! Для того, чтобы использовать событие OnMouseMove компонента TMap, необходимо, грубо говоря, его включить. Для этого, на событие формы OnCreate, например, необходимо его активировать следующим образом Map1.SendMouseMove:=True;

То есть, увидели, как оно показывает координаты. Да, кстати, вот такой вот проект я выложу в следующей статье (полный с исходниками). В этой статье исходников прикладывать не буду, так как в этой статье должно быть итак все понятно, а данный проект выкладывать еще рано, иначе смысл следующей статьи потеряется.

Идем дальше, теперь мы будем изменять вид курсора, чтобы он менял вид и можно было с помощью курсоров: увеличивать, уменьшать, перемещаться по карте, выделять элементы. Тут очень все просто, в этом нам поможет свойство компонента TMap - CursorMode. Список значений данного свойства

  • 0 -cm ZoomIn — курсор для увеличения масштаба
  • 1- cmZoomOut — курсор для уменьшения масштаба
  • 2 — cmPan - курсор для перемещения по карте
  • 3 — cmSelection — курсор для выделения
  • 4 — cmNone — убрать все курсоры (останется курсор в виде стрелку)

Свойство CursorMode компонента TMap, может принимать как числовое значение, перечисленное в списке, так и типа TOleEnum

Идем дальше, рассмотрим, как получить идентификатор слоя, нам это потребуется в следующей статье, так как необходимо будет указывать, на каком слое размещать метки и так далее (указывается его идентификатор).

Когда, мы добавляем новый слой, то просто необходимо это записать в переменную:

HandleLayer:=Map1.AddLayer(shp,true);

Переменная HandleLayer типа integer.

Если вдруг, вы увеличиваете карту, то чтобы вернуть ее в полноразмерный вид, необходимо написать следующий код:

Map1.ZoomToMaxExtents;

А для того, чтобы вернуться к предыдущему виду, то необходимо написать следующий код:

procedure TForm1.ToolButton4Click(Sender: TObject);
begin
   Map1.ZoomToPrev;
end;

Для того, чтобы очистить все слои на карте, воспользуемся следующим кодом:

procedure TForm1.ToolButton5Click(Sender: TObject);
begin
   Map1.RemoveLayer(HandleLayer);
end;

Для того, чтобы спрятать/показать слой, то воспользуемся кодом:

procedure TForm1.ToolButton6Click(Sender: TObject);
begin
   if Map1.LayerVisible[HandleLayer]=False then
    Map1.LayerVisible[HandleLayer]:=True
   else
    Map1.LayerVisible[HandleLayer]:=False;
end;

Ну, для того, чтобы получить проекцию карты, думаю уже из прошлой статьи понятно, как это сделать:

Caption:=shp.Projection;

Ну вот и все. Более-менее такие основные настройки я показал, теперь остается лишь ждать следующий статьи, там будет намного интереснее. Так как, мы уже будем делать полноценную карту с метками, надписями и разноцветную.

Facebook Vk Ok Twitter LinkedIn Telegram

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

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