欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【GMap.Net开发之自定义Marker使用方法】,下面是详细的讲解!
GMap.Net开发之自定义Marker使用方法
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.MapProviders;
using GMap.NET.WindowsForms.Markers;
namespace GMapWinFormDemo
{
public partial class MainForm : Form
{
private GMapOverlay objects=new GMapOverlay("objects"); //放置marker的图层
private GMapMarkerImage currentMarker;
private bool isLeftButtonDown=false;
private Timer blinkTimer=new Timer();
public MainForm()
{
InitializeComponent();
try
{
System.Net.IPHostEntry e=System.Net.Dns.GetHostEntry("www.google.com.hk");
}
catch
{
mapControl.Manager.Mode=AccessMode.CacheOnly;
MessageBox.Show("No internet connection avaible, going to CacheOnly mode.", "GMap.NET Demo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
mapControl.CacheLocation=Environment.CurrentDirectory + "\\GMapCache\\"; //缓存位置
mapControl.MapProvider=GMapProviders.GoogleChinaMap; //google china 地图
mapControl.MinZoom=2; //最小比例
mapControl.MaxZoom=17; //最大比例
mapControl.Zoom=5; //当前比例
mapControl.ShowCenter=false; //不显示中心十字点
mapControl.DragButton=System.Windows.Forms.MouseButtons.Left; //左键拖拽地图
mapControl.Position=new PointLatLng(32.064,118.704); //地图中心位置:南京
mapControl.OnMapZoomChanged +=new MapZoomChanged(mapControl_OnMapZoomChanged);
mapControl.MouseClick +=new MouseEventHandler(mapControl_MouseClick);
mapControl.MouseDown +=new MouseEventHandler(mapControl_MouseDown);
mapControl.MouseUp +=new MouseEventHandler(mapControl_MouseUp);
mapControl.MouseMove +=new MouseEventHandler(mapControl_MouseMove);
mapControl.OnMarkerClick +=new MarkerClick(mapControl_OnMarkerClick);
mapControl.OnMarkerEnter +=new MarkerEnter(mapControl_OnMarkerEnter);
mapControl.OnMarkerLeave +=new MarkerLeave(mapControl_OnMarkerLeave);
mapControl.Overlays.Add(objects);
}
void mapControl_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button==System.Windows.Forms.MouseButtons.Left && isLeftButtonDown)
{
if (currentMarker !=null)
{
PointLatLng point=mapControl.FromLocalToLatLng(e.X, e.Y);
currentMarker.Position=point;
currentMarker.ToolTipText=string.Format("{0},{1}", point.Lat, point.Lng);
}
}
}
void mapControl_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button==System.Windows.Forms.MouseButtons.Left)
{
isLeftButtonDown=false;
}
}
void mapControl_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button==System.Windows.Forms.MouseButtons.Left)
{
isLeftButtonDown=true;
}
}
void mapControl_OnMarkerLeave(GMapMarker item)
{
if (item is GMapMarkerImage)
{
currentMarker=null;
GMapMarkerImage m=item as GMapMarkerImage;
m.Pen.Dispose();
m.Pen=null;
}
}
void mapControl_OnMarkerEnter(GMapMarker item)
{
if (item is GMapMarkerImage)
{
currentMarker=item as GMapMarkerImage;
currentMarker.Pen=new Pen(Brushes.Red, 2);
}
}
void mapControl_OnMarkerClick(GMapMarker item, MouseEventArgs e)
{
}
void mapControl_MouseClick(object sender, MouseEventArgs e)
{
if(e.Button==System.Windows.Forms.MouseButtons.Right)
{
//objects.Markers.Clear();
PointLatLng point=mapControl.FromLocalToLatLng(e.X,e.Y);
//GMapMarker marker=new GMarkerGoogle(point, GMarkerGoogleType.green);
Bitmap bitmap=Bitmap.FromFile("F:\\Projects\\GMapDemo\\GMapDemo\\Image\\A.png") as Bitmap;
//GMapMarker marker=new GMarkerGoogle(point, bitmap);
GMapMarker marker=new GMapMarkerImage(point, bitmap);
marker.ToolTipMode=MarkerTooltipMode.OnMouseOver;
marker.ToolTipText=string.Format("{0},{1}", point.Lat, point.Lng);
objects.Markers.Add(marker);
}
}
void mapControl_OnMapZoomChanged()
{
}
private void buttonBeginBlink_Click(object sender, EventArgs e)
{
blinkTimer.Interval=1000;
blinkTimer.Tick +=new EventHandler(blinkTimer_Tick);
blinkTimer.Start();
}
void blinkTimer_Tick(object sender, EventArgs e)
{
foreach (GMapMarker m in objects.Markers)
{
if (m is GMapMarkerImage)
{
GMapMarkerImage marker=m as GMapMarkerImage;
if (marker.OutPen==null)
marker.OutPen=new Pen(Brushes.Red, 2);
else
{
marker.OutPen.Dispose();
marker.OutPen=null;
}
}
}
mapControl.Refresh();
}
private void buttonStopBlink_Click(object sender, EventArgs e)
{
blinkTimer.Stop();
foreach (GMapMarker m in objects.Markers)
{
if (m is GMapMarkerImage)
{
GMapMarkerImage marker=m as GMapMarkerImage;
marker.OutPen.Dispose();
marker.OutPen=null;
}
}
mapControl.Refresh();
}
}
}
关于GMap.Net开发之自定义Marker使用方法的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【ASP】ASP.NET中内嵌页面代码的一个问题-NET-内
- 【As】Asp.net中的页面乱码的问题-sp--pn-ne-et
- 【增加记录】asp.net中获取新增加记录的ID Access
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
