Работа с картами в Windows Form с использованием GMap.NET

      В данной инструкции будет рассмотрено использование мощного инструмента для .NET Framework - GMap.NET, по работе с различными источниками карт. В этой части будет рассматриваться процесс загрузки и подключения данного инструмента к вашему проекту, загрузка карт различных поставщиков, загрузка по координатам и установка маркеров. Скачать необходимые для работы библиотеки вы можете как с нашего сайта, так и с сайта производителя (www.greatmaps.codeplex.com).
      Рассмотрим пример с загрузкой библиотеки с сайта производителя. Откройте веб-браузер и перейдите по следующему адресу: (www.greatmaps.codeplex.com). После полной загрузки страницы вы увидите множество ссылок для скачивания различных версий, нажмите по первой.
      После полной загрузки файла, перейдите в директорию со скачанным архивом библиотек. Сделайте клик правой клавишей по архиву и выберете из появившегося контекстного меню пункт «Извлечь в GMap.Net».
Директория с распакованным архивом будет содержать следующие файлы:
  • BSE.Windows.Forms.dll
  • Demo.WindowsForms.exe
  • Demo.WindowsPresentation.exe
  • GMap.NET.Core.dll
  • GMap.NET.Core.xml
  • GMap.NET.WindowsForms.dll
  • GMap.NET.WindowsForms.xml
  • GMap.NET.WindowsPresentation.dll
  • GMap.NET.WindowsPresentation.xml
  • License.txt
      Создайте проект Windows Form в Microsoft Visual Studio и перейдите в Обозреватель решений, открыв «Меню-Вид-Обозреватель решений». Чтобы использовать скачанный компонент в данном проекте, необходимо сначала добавить ссылку на этот компонент. В обозревателе решений, сделайте клик правой клавишей мыши по группе «References», содержащей ссылки на библиотеки необходимые для работы проекта, а в открывшемся контекстном меню, выберете пункт «Добавить ссылку…».
      У вас откроется диалоговое окно «Менеджер ссылок». В левой части окна, у вас будет представлен список разделов. Выберете последний пункт «Обзор». После выбора данного раздела, в нижней части у вас появится кнопка «Обзор…». Нажав на нее, у вас откроется проводник для выбора файлов библиотек, ссылки на которые будут добавлены в проект.
      Перейдите в папку с распакованными библиотеками «GMap.Net». Выберете библиотеки «GMap.NET.Core.dll», «GMap.NET.WindowsForms.dll» и нажмите кнопку «Добавить».
      В Менеджере ссылок, вы увидите выбранные вами библиотеки. Для завершения добавления ссылок на данные библиотеки, нажмите кнопку «ОК».
      Перейдите в Обозреватель решений. В группе «References», вы увидите два новых пункта, содержащие имена добавленных библиотек.
      Для графического отображения карты необходимо добавить компонент «GMap.NET». Перейдите в Панель элементов и в группе «Общие» сделайте клик правой клавишей мыши по пустому пространству группы. В открывшемся контекстном меню выберете пункт «Выбрать элементы…».
      В открывшемся окне «Выбор элементов панели элементов», у вас по умолчанию будет открыта вкладка «Компоненты .NET Framework». На данной вкладке вам будет предложено отметить галочками, компоненты которые вы хотите добавить. Так же присутствует кнопка «Обзор…», для добавления компонента стороннего производителя. Нажмите на нее для добавления компонента «GMap.Net».
      Перейдите в папку с раскованным архивом библиотек «GMap.Net» и выберете библиотеку «GMap.NET.WindowsForms.dll» и нажмите кнопку «Открыть».
      Вернувшись в окно «Выбор элементов панели элементов», во вкладку «Компоненты .NET Framework», вы увидите в списке компонентов новый элемент управления «GMapControl», с установленной напротив галочкой, означающей, что данный компонент будет добавлен и отображаться в панели элементов. Нажмите кнопку «ОК».
      Перейдите в Панель элементов. В группе «Общие» у вас появится новый элемент управления «GMapControl». Добавьте его на главную форму вашего проекта и сделайте двойной клик по пустому пространству главной формы. Вы перейдете в автоматически созданный метод «Form1_Load», события «Load», выполняющегося при каждой загрузке главной формы. Добавьте приведенный ниже листинг инициализации карты с настройками.
//Настройки для компонента GMap.
gMapControl1.Bearing = 0;

//CanDragMap - Если параметр установлен в True,
//пользователь может перетаскивать карту 
///с помощью правой кнопки мыши. 
gMapControl1.CanDragMap = true;

//Указываем, что перетаскивание карты осуществляется 
//с использованием левой клавишей мыши.
//По умолчанию - правая.
gMapControl1.DragButton = MouseButtons.Left;

gMapControl1.GrayScaleMode = true;

//MarkersEnabled - Если параметр установлен в True,
//любые маркеры, заданные вручную будет показаны.
//Если нет, они не появятся.
gMapControl1.MarkersEnabled = true;

//Указываем значение максимального приближения.
gMapControl1.MaxZoom = 18;

//Указываем значение минимального приближения.
gMapControl1.MinZoom = 2;

//Устанавливаем центр приближения/удаления
//курсор мыши.
gMapControl1.MouseWheelZoomType = 
    GMap.NET.MouseWheelZoomType.MousePositionAndCenter;

//Отказываемся от негативного режима.
gMapControl1.NegativeMode = false;

//Разрешаем полигоны.
gMapControl1.PolygonsEnabled = true;

//Разрешаем маршруты
gMapControl1.RoutesEnabled = true;

//Скрываем внешнюю сетку карты
//с заголовками.
gMapControl1.ShowTileGridLines = false;

//Указываем, что при загрузке карты будет использоваться 
//18ти кратное приближение.
gMapControl1.Zoom = 5;

//Указываем что все края элемента управления
//закрепляются у краев содержащего его элемента
//управления(главной формы), а их размеры изменяются 
//соответствующим образом.
gMapControl1.Dock = DockStyle.Fill;

//Указываем что будем использовать карты Google.
//gMapControl1.MapProvider =
    GMap.NET.MapProviders.GMapProviders.GoogleMap;
GMap.NET.GMaps.Instance.Mode = 
    GMap.NET.AccessMode.ServerOnly;   

//Если вы используете интернет через прокси сервер,
//указываем свои учетные данные.
GMap.NET.MapProviders.GMapProvider.WebProxy = 
    System.Net.WebRequest.GetSystemWebProxy();
GMap.NET.MapProviders.GMapProvider.WebProxy.Credentials = 
    System.Net.CredentialCache.DefaultCredentials;
      Для загрузки определенного места на карте в данном компоненте реализованы следующие форматы загрузки определенного местоположения:
  • SetCurrentPositionByKeywords(“country”) – USA – Страна;
  • SetCurrentPositionByKeywords(“state, country”) – Berlin, Germany – Город;
  • SetCurrentPositionByKeywords(“province, country”) – Alberta, Canada – Провинция;
  • Position = New PointLatLng(latitude,longitude) – New PointLatLng(54.6961334816182, 25.2985095977783) – Координаты.
      Рассмотрим пример открытия определенного места на карте через указание координат. Для получения координат есть много способов, один из них, это получение через браузер с использованием Google карт.
  • 1)Откройте браузер и перейдите на страницу Google карт(https://www.google.ru/maps/preview); 
  • 2)Выберете на карте необходимый вам объект;
  • 3)В строке браузера вы увидите координаты этого объекта;
  • 4)Скопируйте и вставьте в таком же формате как показано ниже.
gMapControl1.Position = new GMap.NET.PointLatLng(65.75393, 47.620795);
      Для Красной площади в Москве, будут координаты «55.75393, 37.620795», соответственно код их открытия будет выглядеть следующим образом:
gMapControl1.Position = new GMap.NET.PointLatLng(55.75393, 37.620795);
      Если ваш объект известен Google, то в левой верхней части вы увидите описание объекта и необходимые вам координаты.
      Добавьте строку кода с указанием координат выбранного вами объекта после кода с настройками элемента управления «GMap.NET» и запустите компиляцию проекта, нажав на клавиатуре клавишу «F5». В разрабатываемом примере были введены координаты красной площади в Москве. Пример работы тестового проекта представлен ниже.
     По умолчанию карта не отображает маркеры по координатам, которые вы указали. Их необходимо создавать вручную. Пример создания зеленого маркера при использовании Google карт представлен ниже:
//Создаем новый список маркеров, с указанием компонента 
//в котором они будут использоваться и названием списка
GMap.NET.WindowsForms.GMapOverlay markersOverlay =
    new GMap.NET.WindowsForms.GMapOverlay(gMapControl1, "marker");

//Инициализация нового ЗЕЛЕНОГО маркера, с указанием его координат
GMap.NET.WindowsForms.Markers.GMapMarkerGoogleGreen marker =
    new GMap.NET.WindowsForms.Markers.GMapMarkerGoogleGreen(
    new GMap.NET.PointLatLng(55.75393, 37.620795));
marker.ToolTip = 
    new GMap.NET.WindowsForms.ToolTips.GMapRoundedToolTip(marker);
//Текст отображаемый при наведении на маркер
marker.ToolTipText = "Красная площадь";
//Добавляем маркер в список маркеров
markersOverlay.Markers.Add(marker);
//Добавляем в компонент, список маркеров 
gMapControl1.Overlays.Add(markersOverlay);
      Пример использования красного маркера для Google карт, представлен ниже. Для наглядности маркер смещен по горизонтали.
//Создаем новый список маркеров, с указанием компонента 
//в котором они будут использоваться и названием списка
GMap.NET.WindowsForms.GMapOverlay markersOverlay =
    new GMap.NET.WindowsForms.GMapOverlay(gMapControl1, "marker");

//Инициализация нового ЗЕЛЕНОГО маркера, с указанием его координат
GMap.NET.WindowsForms.Markers.GMapMarkerGoogleGreen markerG =
    new GMap.NET.WindowsForms.Markers.GMapMarkerGoogleGreen(
    new GMap.NET.PointLatLng(55.75393, 37.620795));
markerG.ToolTip =
    new GMap.NET.WindowsForms.ToolTips.GMapRoundedToolTip(markerG);
//Текст отображаемый при наведении на маркер
markerG.ToolTipText = "Красная площадь";

//Инициализация нового КРАСНОГО маркера, с указанием его координат
GMap.NET.WindowsForms.Markers.GMapMarkerGoogleRed markerR =
    new GMap.NET.WindowsForms.Markers.GMapMarkerGoogleRed(
    new GMap.NET.PointLatLng(55.75393, 37.620695));
markerR.ToolTip =
    new GMap.NET.WindowsForms.ToolTips.GMapRoundedToolTip(markerR);
//Текст отображаемый при наведении на маркер
markerR.ToolTipText = "Красная площадь";

//Добавляем маркеры в список маркеров
markersOverlay.Markers.Add(markerG);
markersOverlay.Markers.Add(markerR);
//Добавляем в компонент, список маркеров 
gMapControl1.Overlays.Add(markersOverlay);
Карты Google так же позволяют использовать следующие варианты карт:
  • Уличные:
    gMapControl1.MapProvider = 
        GMap.NET.MapProviders.GMapProviders.GoogleMap;
  • Спутниковые:
    gMapControl1.MapProvider =
        GMap.NET.MapProviders.GMapProviders.GoogleSatelliteMap;
  • Гибридные:
    gMapControl1.MapProvider =
        GMap.NET.MapProviders.GMapProviders.GoogleHybridMap;
      Данный компонент позволяет использовать карты различных источников, основные из них:
BingMap – Карты от Microsoft;

gMapControl1.MapProvider = 
    GMap.NET.MapProviders.GMapProviders.BingMap;
OpenStreet – Карты от Open Street.
gMapControl1.MapProvider =
    GMap.NET.MapProviders.GMapProviders.OpenStreetMap;
YahooMap – Карты от Yahoo (Есть уличные, спутниковые и гибридные варианты).
gMapControl1.MapProvider =
    GMap.NET.MapProviders.GMapProviders.YahooHybridMap;
YandexMap –Карты от Яндекс.
gMapControl1.MapProvider =
    GMap.NET.MapProviders.GMapProviders.YandexMap;
TurkeyMap – Турецкие карты.
gMapControl1.MapProvider =
    GMap.NET.MapProviders.GMapProviders.TurkeyMap;
OviMap - карты от Nokia.
gMapControl1.MapProvider =
    GMap.NET.MapProviders.GMapProviders.OviMap;

Ссылка для скачивания примера: Яндекс.Диск


Ссылка для скачивания библиотек Gmap: Яндекс.Диск


Комментариев нет:

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

Большая просьба, не писать в комментариях всякую ерунду не по теме!