1.初始化地图
private GMapMarkerCircle drawingClicle = null;
private GMapPolygon drawingPolygon = null;
private List<PointLatLng> drawingPolygonPoints = new List<PointLatLng>();
private GMapPolygon drawingPolyLine = null;
private List<PointLatLng> drawingPolygonLinePoints = new List<PointLatLng>();
if (!GMapControl.IsDesignerHosted)
{
//设置 Prividers
// config map
mainMap.MapProvider = GMapProviders.GoogleChinaMap;
//设置地图中心点
// mainMap.Position = new PointLatLng(22.836945, 113.9501953);
mainMap.Position = new PointLatLng(22.836945, 113.9501953);
//设置地图最小Zoom
mainMap.MinZoom = 5;
//设置地图最大Zoom
mainMap.MaxZoom = 18;
//设置地图当前Zoom
mainMap.Zoom = 10;
//左键拖拽地图
//mainMap.DragButton = MouseButtons.Left;
this.mainMap.MouseDown += new MouseEventHandler(this.mainMap_MouseDown);
this.mainMap.MouseMove += new MouseEventHandler(this.mainMap_MouseMove);
this.mainMap.MouseUp += new MouseEventHandler(this.mainMap_MouseUp);
mainMap.Overlays.Add(top);
mainMap.Overlays.Add(polylinesOverlay);
}
void mainMap_MouseDown(object sender, MouseEventArgs e){
startPoint = mainMap.FromLocalToLatLng(e.X, e.Y);
if (drawType == (int)DrawToolType.PolyLine)
{
drawingPolygonLinePoints.Add(startPoint);
if (drawingPolyLine == null)
{
drawingPolyLine = new GMapPolygon(drawingPolygonLinePoints, "");
top.Polygons.Add(drawingPolyLine);
}
}
}
//画线 覆盖物
private GMapOverlay polylinesOverlay = new GMapOverlay();
void mainMap_MouseMove(object sender, MouseEventArgs e)
{
this.lblInfo.Text = "lat:" + mainMap.FromLocalToLatLng(e.X, e.Y).Lat + "lng:" + mainMap.FromLocalToLatLng(e.X, e.Y).Lng;
var latLng = mainMap.FromLocalToLatLng(e.X, e.Y);
if (drawType == (int)DrawToolType.PolyLine)
{
drawingPolygonLinePoints.Clear();
if (drawingPolyLine != null)
{
//drawingPolyLine.Points.Clear();
drawingPolygonLinePoints.Add(startPoint);
drawingPolygonLinePoints.Add(latLng);
lblLatLng.Text = drawingPolygonLinePoints.Count.ToString();
drawingPolyLine = new GMapPolygon(drawingPolygonLinePoints,"");
polylinesOverlay.Polygons.Clear();
polylinesOverlay.Polygons.Add(drawingPolyLine);
}
}
mainMap.Refresh();
}
PointLatLng startPoint = new PointLatLng();
void mainMap_MouseUp(object sender, MouseEventArgs e) {
if (drawType == (int)DrawToolType.PolyLine)
{
if (drawingPolyLine != null)
{
drawingPolygonLinePoints.Clear();
drawingPolyLine.Points.Clear();
drawingPolygonLinePoints.Add(startPoint);
drawingPolygonLinePoints.Add(mainMap.FromLocalToLatLng(e.X,e.Y));
drawingPolyLine = new GMapPolygon(drawingPolygonLinePoints,"");
top.Polygons.Add(drawingPolyLine);
drawType = (int)DrawToolType.None;
drawingPolyLine = null;
drawingPolygonLinePoints.Clear();
polylinesOverlay.Clear();
}
}
}