Данная инструкция является продолжением обзора компонента по работе с картами — «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» картинку, сделав ее в любом графическом редакторе.
Ссылка для скачивания примера: Яндекс.Диск
0.00 (0%) 0 votes















