Example #1
0
        /// <summary>
        /// 创建线图元
        /// </summary>
        /// <param name="kml">kml对象</param>
        /// <param name="gmapOverlay">图层</param>
        /// <returns></returns>
        public IMFElement CreateElement(Kml kml, GMapOverlay gmapOverlay)
        {
            KmlLineString line = kml.Placemark.Graph as KmlLineString;

            if (line == null)
            {
                return(null);
            }
            if (line.PositionList == null || line.PositionList.Count == 0)
            {
                return(null);
            }

            // 画线
            Line_GMap lineRoute = new Line_GMap(kml.Placemark.Name, line);

            // 将图元添加到图层
            if (gmapOverlay.Control.InvokeRequired)
            {
                gmapOverlay.Control.Invoke(new Action(delegate
                {
                    gmapOverlay.Routes.Add(lineRoute);
                }));
            }
            else
            {
                gmapOverlay.Routes.Add(lineRoute);
            }
            return(lineRoute);
        }
Example #2
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     ReleaseCommond();
     gmapControl = null;
     mapOverlay  = null;
     marker      = null;
     lineRoute   = null;
 }
Example #3
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     ReleaseCommond();
     CommondExecutedEvent = null;
     gmapControl          = null;
     mapOverlay           = null;
     lineRoute            = null;
     marker     = null;
     markerList = null;
 }
Example #4
0
 /// <summary>
 /// 鼠标按下,绘制第一个点,并注册鼠标移动事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void gmapControl_MouseDown(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left)
     {
         var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y);
         if (index == 0)
         {
             //添加点
             MapLngLat point = new MapLngLat(lngLat.Lng, lngLat.Lat);
             marker             = new EditMarker(lngLat);
             marker.Tag         = "点";
             marker.ToolTipText = string.Format("起点\n经度:{0}\n纬度:{1}\n角度:{2}°", lngLat.Lng, lngLat.Lat, 0);
             marker.ToolTipMode = MarkerTooltipMode.Always;
             mapOverlay.Markers.Add(marker);
             //添加线
             KmlLineString linekml = new KmlLineString();
             linekml.Color = Color.Green;
             linekml.Width = 3;
             List <MapLngLat> pList = new List <MapLngLat>();
             pList.Add(new MapLngLat(lngLat.Lng, lngLat.Lat));
             pList.Add(new MapLngLat(lngLat.Lng, lngLat.Lat));
             linekml.PositionList = pList;
             lineRoute            = new Line_GMap("measure_Angle", linekml);
             mapOverlay.Routes.Add(lineRoute);
             pointList[0] = point;
             //注册移动事件
             gmapControl.MouseMove += new System.Windows.Forms.MouseEventHandler(gmapControl_MouseMove);
             index++;
         }
         else if (index == 1)
         {
             index++;
             gmapControl.MouseMove -= gmapControl_MouseMove;
             RegistCommandExcuteEvent();
             ReleaseCommond();//修改  陈静
         }
         else if (index == 2)
         {
             index = 0;
             mapOverlay.Markers.Remove(marker);
             mapOverlay.Routes.Remove(lineRoute);
         }
     }
 }
Example #5
0
        /// <summary>
        /// 鼠标单击,开始测量
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gmapControl_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left && gmapControl.CanDragMap == false)
            {
                if (isFinish == true)
                {
                    foreach (var item in markerList)
                    {
                        mapOverlay.Markers.Remove(item);
                    }

                    mapOverlay.Routes.Remove(lineRoute);
                    isFinish = false;
                    //ReleaseCommond();
                    //return;
                }

                string name   = string.Format("point_{0}", pointIndex);
                var    lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y);

                if (pointIndex == 0)   // 第一个点
                {
                    // 加点
                    marker             = new EditMarker(lngLat);
                    marker.ToolTipMode = MarkerTooltipMode.Always;
                    marker.ToolTipText = string.Format("起点\n经度:{0}\n纬度:{1}\n", Math.Round(lngLat.Lng, 6), Math.Round(lngLat.Lat, 6));
                    mapOverlay.Markers.Add(marker);
                    marker.ToolTip.Format.Alignment = StringAlignment.Near;

                    // 加线
                    KmlLineString linekml = new KmlLineString();
                    linekml.Color = Color.Green;
                    linekml.Width = 3;
                    List <MapLngLat> pList = new List <MapLngLat>();
                    pList.Add(new MapLngLat(lngLat.Lng, lngLat.Lat));
                    linekml.PositionList = pList;
                    lineRoute            = new Line_GMap("measure_line", linekml);
                    mapOverlay.Routes.Add(lineRoute);

                    pointIndex++;
                }
                else
                {
                    pointIndex++;

                    // 添加点
                    lineRoute.Points.Add(lngLat);
                    lineRoute.AddPoint(new MapLngLat(lngLat.Lng, lngLat.Lat));
                    gmapControl.Refresh();

                    // 添加Marker
                    marker = new EditMarker(lngLat);
                    mapOverlay.Markers.Add(marker);
                    distance           = lineRoute.Distance;
                    distance           = Math.Round(distance, 3);
                    marker.ToolTipMode = MarkerTooltipMode.Always;
                    marker.ToolTipText = string.Format("点{0}\n经度:{1}\n纬度:{2}\n距离:{3}(公里)", pointIndex, Math.Round(lngLat.Lng, 6), Math.Round(lngLat.Lat, 6), distance);
                    marker.ToolTip.Format.Alignment = StringAlignment.Near;
                }
                markerList.Add(marker);
            }
        }