Домой C# Работа с картами в Windows Form с использованием GMap.NET. Часть 4. :...

Работа с картами в Windows Form с использованием GMap.NET. Часть 4. : Справочник по C#

670
0


      Данная инструкция является продолжением обзора компонента по работе с картами — «GMap.NET». По завершению работы с данной инструкцией в вашем проекте будет реализован функционал загрузки карты по определенным координатам, а так же замена стандартного маркера, который предоставляет компонент, на любое другое изображение в формате «*.png».
      Для данной инструкции будет использован пример из первой части (Работа с картами в Windows Form с использованием GMap.NET) обзора данного компонента. Вы можете воспользоваться как тестовым примером или полностью выполнить первую инструкцию самостоятельно и плавно перейти к выполнению этой. Если вы воспользовались исходником из первой части обзора компонента «GMap.NET», метод загрузки главной формы «Form1_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;

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

//Указываем что все края элемента управления
//закрепляются у краев содержащего его элемента
//управления(главной формы), а их размеры изменяются
//соответствующим образом.
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;

//Устанавливаем координаты центра карты для загрузки.
gMapControl1.Position =
new GMap.NET.PointLatLng(55.75393, 37.620795);

      Далее необходимо добавить в проект класс, реализующий замену стандартного маркера на изображение расположенное возле исполняемого файла вашего проекта. Добавьте приведенный ниже код класса, после класса главной формы «public partial class Form1 : Form».

class GMapMarkerImage : GMapMarker
{
private Image image;
public Image Image
{
get
{
return image;
}
set
{
image = value;
if (image != null)
{
this.Size =
new Size(image.Width,
image.Height);
}
}
}

public GMapMarkerImage(
GMap.NET.PointLatLng p,
Image image)
: base(p)
{
Size =
new System.Drawing.Size(
image.Width,
image.Height);
Offset =
new System.Drawing.Point(
-Size.Width / 2,
-Size.Height / 2);
this.image = image;
}

public override void OnRender(Graphics g)
{
if (image != null)
{

Rectangle rect =
new Rectangle(LocalPosition.X,
LocalPosition.Y,
Size.Width,
Size.Height);
g.DrawImage(image, rect);
}
}
}

      Чтобы воспользоваться данным классом необходимо в конце кода метода «Form1_Load», выполнить инициализацию нового маркера:

//Создаем новый список маркеров, с указанием компонента
//в котором они будут использоваться и названием списка.
GMap.NET.WindowsForms.GMapOverlay markersOverlay =
new GMap.NET.WindowsForms.GMapOverlay(gMapControl1, "marker");

//Маркер для простой отметки на карте
Bitmap bitmap =
Bitmap.FromFile(
Application.StartupPath + @"marker.png")
as Bitmap;

//Инициализация нового маркера, с указанием его координат.
GMapMarkerImage marker = new
GMapMarkerImage(new GMap.NET.PointLatLng(55.75393, 37.620795), bitmap);

//Добавляем маркер с изображением в список маркеров.
markersOverlay.Markers.Add(marker);

//Добавляем в компонент, список маркеров.
gMapControl1.Overlays.Add(markersOverlay);

      Перейдите в директорию, в которой расположен ваш исполняемый файл, в Microsoft Visual Studio это папка «Debug». Вставьте в данную папку, изображение в формате «*.png», которое будет у вас маркером на карте и переименуйте его в «marker.png». Запустите ваш проект и проверьте работу вашего класса. Ниже представлены примеры работы программы с различными изображениями для маркера.

      Так же вы можете в качестве изображения вставить «ToolTip» картинку, сделав ее в любом графическом редакторе.

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

ЧИТАТЬ ТАКЖЕ:  Копирование папки с вложениями на C#: Справочник по C#

Работа с картами в Windows Form с использованием GMap.NET. Часть 4. : Справочник по C#

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь