Inheritance: GMap.NET.WindowsForms.GMapMarker
 public override void OnMapMouseDown(object sender, MouseEventArgs e)
 {
     PointLatLng currentPoint = this._gMapControl.FromLocalToLatLng(e.X, e.Y);
     double mercatorX, mercatorY;
     Helper.LonLat2Mercator(currentPoint.Lng, currentPoint.Lat, out mercatorX, out mercatorY);
     Point2D point2D = new Point2D(mercatorX, mercatorY);
     _point2Ds.Add(point2D);
     _points.Add(currentPoint);
     if (_start)
     {
         MeasureDistanceResult result = _map.MeasureDistance(_mapName, _point2Ds, Unit.KILOMETER);
         GMapMarkerExtension mBorders = new GMapMarkerExtension(currentPoint);
         mBorders.ToolTipText = string.Format("{0:f1}千米", result.Distance);
         mBorders.ToolTipMode = MarkerTooltipMode.Always;
         _gMapOverlay.Markers.Add(mBorders);
     }
     _start = true;
 }
        public override void OnMapMouseMove(object sender, MouseEventArgs e)
        {
            if (!_start) return;
            PointLatLng currentPoint = this._gMapControl.FromLocalToLatLng(e.X, e.Y);

            if (flag)
            {
                _points.RemoveAt(_points.Count - 1);
            }
            if (!flag) flag = true;
            _points.Add(currentPoint);
            _polygon = new GMapPolygonExtension("", _points, 2.0F,
               System.Drawing.Color.FromArgb(100, 0, 0, 255), System.Drawing.Color.FromArgb(25, 0, 0, 255));

            if (_point2Ds.Count > 1)
            {
                List<Point2D> tempPoints = new List<Point2D>();
                tempPoints.AddRange(_point2Ds);
                double mercatorX, mercatorY;
                Helper.LonLat2Mercator(currentPoint.Lng, currentPoint.Lat, out mercatorX, out mercatorY);
                Point2D point2D = new Point2D(mercatorX, mercatorY);
                tempPoints.Add(point2D);
                Map map = new Map(_mapUrl);
                MeasureAreaResult areaResult = map.MeasureArea(_mapName, tempPoints, Unit.KILOMETER);
                if (_resultMarker == null || _gMapOverlay.Markers.Count < 1)
                {
                    _resultMarker = new GMapMarkerExtension(currentPoint);
                    _resultMarker.ToolTipMode = MarkerTooltipMode.Always;
                    _gMapOverlay.Markers.Add(_resultMarker);
                }
                _resultMarker.Position = currentPoint;
                _resultMarker.ToolTipText = string.Format("{0:f1}平方千米", areaResult.Area);
            }
            if (_gMapOverlay.Polygons.Count > 0)
            {
                _gMapOverlay.Polygons[0] = _polygon;
            }
            else
            {
                _gMapOverlay.Polygons.Add(_polygon);
            }
        }