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










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