public void ReSet(BMapControl c) { _linesDist = 0; _drawCompleteToolTip = new InfoToolTip(); IsCompleted = false; LstMarkPoint.Clear(); c.Refresh(); }
public void OnMouseClick(BMapControl c, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (IsCompleted) { ReSet(c); } switch (DrawMode) { case EditMode.DrawLine: if (LstMarkPoint.Count < 2) { LstMarkPoint.Add(c.PointToLatLng(e.Location)); } else { LstMarkPoint.Add(c.PointToLatLng(e.Location)); } if (LstMarkPoint.Count == 2) { IsCompleted = true; var p1 = LstMarkPoint[0]; var p2 = LstMarkPoint[1]; //c.Invalidate(DrawHelper.GetLineRegion(c.LatLngToPoint(p1), c.LatLngToPoint(p2))); _drawCompleteToolTip.Info = string.Format("距离:{0:0.00} 米\r\n正北角:{1:0.0} °" , MercatorHelper.GetDistance(p1, p2), MercatorHelper.GetBearing(p1, p2)); } break; case EditMode.DrawLines: PointLatLng lastP = null; if (LstMarkPoint.Count > 0) { lastP = LstMarkPoint.Last(); } var curP = c.PointToLatLng(e.Location); LstMarkPoint.Add(curP); //计算距离 if (lastP != null) { _linesDist += MercatorHelper.GetDistance(lastP, curP); } _drawCompleteToolTip.Info = string.Format("总距离:{0:0.00} 米", _linesDist); break; case EditMode.DrawRect: if (LstMarkPoint.Count < 2) { LstMarkPoint.Add(c.PointToLatLng(e.Location)); } if (LstMarkPoint.Count == 2) { IsCompleted = true; //var p1 = LstMarkPoint[0]; //var p2 = LstMarkPoint[1]; ////c.Invalidate(DrawHelper.GetLineRegion(c.LatLngToPoint(p1), c.LatLngToPoint(p2))); //_drawCompleteToolTip.Info = string.Format("面积:{0:0.00} m²\r\n正北角:{1:0.0} °" // , MercatorHelper.GetDistance(p1, p2)* MercatorHelper.GetBearing(p1, p2)); } break; case EditMode.DrawPolyon: LstMarkPoint.Add(c.PointToLatLng(e.Location)); break; case EditMode.DrawCircle: LstMarkPoint.Add(c.PointToLatLng(e.Location)); if (LstMarkPoint.Count == 2) { IsCompleted = true; var p1 = LstMarkPoint[0]; var p2 = LstMarkPoint[1]; _drawCompleteToolTip.Info = string.Format("半径:{0:0.00}米", MercatorHelper.GetDistance(p1, p2)); } break; case EditMode.DrawPie: LstMarkPoint.Add(c.PointToLatLng(e.Location)); if (LstMarkPoint.Count == 3) { IsCompleted = true; var p1 = c.LatLngToPoint(LstMarkPoint[0]); var p2 = c.LatLngToPoint(LstMarkPoint[1]); var p3 = c.LatLngToPoint(LstMarkPoint[2]); _drawCompleteToolTip.Info = string.Format("坐标:{0}\r\n半径:{1:0.00}米\r\n中线方向:{2:0.00}°\r\n角度宽:{3:0.00}°", LstMarkPoint[0], MercatorHelper.GetDistance(LstMarkPoint[0], LstMarkPoint[1]), MercatorHelper.GetBearing(LstMarkPoint[0], LstMarkPoint[1]), 2 * DrawHelper.GetAngle(p1, p2, p3)); } break; case EditMode.None: default: break; } } else if (e.Button == MouseButtons.Right) { IsCompleted = true; } if (DrawMode != EditMode.None) { c.Refresh(); } if (IsCompleted) { if (DrawComplete != null) { DrawComplete(LstMarkPoint); } } }