Beispiel #1
0
 /// <summary>
 /// 更新圆心坐标和半径
 /// </summary>
 /// <param name="centerDot"></param>
 /// <param name="radius"></param>
 public void UpdatePosition(Core.Model.MapLngLat centerDot, double radius)
 {
     listPoint[0] = centerDot;
     //listPoint[1] = GetPointByDistanceAndAngle(radius, centerDot);
     listPoint[1] = MapFrame.Core.Common.Utils.GetPointByDistanceAndAngle((float)radius, listPoint[0], 180);
     DrawNewCircle(listPoint);
 }
Beispiel #2
0
        /// <summary>
        /// 更新多边形的某一点坐标
        /// </summary>
        /// <param name="oldLngLat">老坐标</param>
        /// <param name="newLngLat">新坐标</param>
        /// <returns></returns>
        public bool UpdatePosition(Core.Model.MapLngLat oldLngLat, Core.Model.MapLngLat newLngLat)
        {
            Dosomething((Action)(delegate
            {
                IPoint oldPoint = new PointClass()
                {
                    X = oldLngLat.Lng, Y = oldLngLat.Lat
                };
                IPoint newPoint = new PointClass()
                {
                    X = newLngLat.Lng, Y = newLngLat.Lat
                };
                for (int i = 0; i < pointCollection.PointCount; i++)
                {
                    if (pointCollection.get_Point(i).Compare(oldPoint) == 0)
                    {
                        pointCollection.RemovePoints(i, 1);
                        pointCollection.AddPoint(newPoint);
                        //坐标点集合
                        pointList.Remove(oldLngLat);
                        pointList.Add(newLngLat);
                        break;
                    }
                }
                base.Geometry = (IGeometry)pointCollection;
            }), true);

            Update();

            return(true);
        }
Beispiel #3
0
        private void mapControl_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e)
        {
            if (eventInited == 1)
            {
                ICommand command = mapControl.CurrentTool as ICommand;
                if (command != null && command.Name == "ControlToolsMapNavigation_Pan")
                {
                    //更新标牌
                    IPoint targetPoint = base.Geometry as IPoint;
                    Core.Model.MapLngLat startPoint = new Core.Model.MapLngLat(targetPoint.X, targetPoint.Y);
                    int x = -1;
                    int y = -1;
                    mapControl.FromMapPoint(targetPoint, ref x, ref y);
                    mapLabel.UpdateLabelLocation(new System.Drawing.Point(x, y));

                    //更新线
                    IPoint labelPoint             = mapControl.ToMapPoint(mapLabel.Location.X, mapLabel.Location.Y);
                    Core.Model.MapLngLat endPoint = new Core.Model.MapLngLat(labelPoint.X, labelPoint.Y);
                    MapFrame.Core.Interface.IMFElement element = BelongLayer.GetElement("标牌线");
                    if (element == null)
                    {
                        return;
                    }
                    IMFLine lineElement = element as IMFLine;
                    List <Core.Model.MapLngLat> lnglatList = new List <Core.Model.MapLngLat>();
                    lnglatList.Add(startPoint);
                    lnglatList.Add(endPoint);
                    lineElement.UpdatePosition(lnglatList);
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// 获取当前位置
        /// </summary>
        /// <returns></returns>
        public Core.Model.MapLngLat GetLngLat()
        {
            IPoint point = base.Geometry as IPoint;

            Core.Model.MapLngLat lnglat = new Core.Model.MapLngLat(point.X, point.Y);
            return(lnglat);
        }
Beispiel #5
0
        // 鼠标移动事件
        private void mapControl_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e)
        {
            // 鼠标指针
            IPoint point = new PointClass();

            point.PutCoords(e.mapX, e.mapY);
            var elementenum = graphicsContainer.LocateElements(point, 0);

            if (elementenum != null)
            {
                mapControl.MousePointer = esriControlsMousePointer.esriPointerCrosshair;
                mapControl.CurrentTool  = null;
            }
            else
            {
                if (isLeftBtnDown == false)
                {
                    mapControl.MousePointer = esriControlsMousePointer.esriPointerDefault;
                }
            }

            if (isLeftBtnDown == false)
            {
                return;
            }
            Core.Model.MapLngLat lnglat = new Core.Model.MapLngLat(e.mapX, e.mapY);
            editElement.UpdatePosition(lnglat);   // 重新给位置
        }
Beispiel #6
0
        /// <summary>
        /// 屏幕坐标转地理坐标
        /// </summary>
        /// <param name="x">屏幕X</param>
        /// <param name="y">屏幕Y</param>
        /// <returns></returns>
        public Core.Model.MapLngLat SceneToGeographyPoint(int x, int y)
        {
            IPoint point = mapControl.ToMapPoint(x, y);

            Core.Model.MapLngLat lnglat = new Core.Model.MapLngLat(point.X, point.Y);
            return(lnglat);
        }
Beispiel #7
0
        /// <summary>
        /// 更新位置
        /// </summary>
        /// <param name="lngLat">经纬度</param>
        public void UpdatePosition(Core.Model.MapLngLat lngLat)
        {
            IPoint point = new PointClass();

            point.PutCoords(lngLat.Lng, lngLat.Lat);
            base.Geometry = point;
            Update();
        }
Beispiel #8
0
        /// <summary>
        /// 屏幕坐标转地理坐标
        /// </summary>
        /// <param name="x">屏幕X</param>
        /// <param name="y">屏幕Y</param>
        /// <returns></returns>
        public Core.Model.MapLngLat SceneToGeographyPoint(int x, int y)
        {
            float lon = 0, lat = 0;

            mapControl.MgsAppXYtoBL(0, x, y, ref lon, ref lat);
            Core.Model.MapLngLat lnglat = new Core.Model.MapLngLat(lon, lat);
            return(lnglat);
        }
Beispiel #9
0
        /// <summary>
        /// 增加坐标点
        /// </summary>
        /// <param name="lngLat"></param>
        public void AddPoint(Core.Model.MapLngLat lngLat)
        {
            var index = listPoint.FindIndex(o => o.Lng == lngLat.Lng && o.Lat == lngLat.Lat);

            if (index == -1)
            {
                listPoint.Add(lngLat);
                DrawNewLine(listPoint);
            }
        }
Beispiel #10
0
        /// <summary>
        /// 移除某个坐标点
        /// </summary>
        /// <param name="lngLat"></param>
        public void RemovePoint(Core.Model.MapLngLat lngLat)
        {
            var index = listPoint.FindIndex(o => o.Lng == lngLat.Lng && o.Lat == lngLat.Lat);

            if (index == -1 || listPoint.Count <= 2)
            {
                return;
            }
            listPoint.RemoveAt(index);
            DrawNewLine(listPoint);
        }
Beispiel #11
0
        /// <summary>
        /// 屏幕坐标转地理坐标
        /// </summary>
        /// <param name="x">屏幕X</param>
        /// <param name="y">屏幕Y</param>
        /// <returns></returns>
        public MapLngLat SceneToGeographyPoint(int x, int y)
        {
            double         dLat, dLon, dAlt;
            IGlobeDisplay  pGlobeDisplay  = mapControl.GlobeDisplay;
            ISceneViewer   pViewer        = mapControl.GlobeDisplay.ActiveViewer;
            IGlobeViewUtil pGlobeViewUtil = mapControl.GlobeCamera as IGlobeViewUtil;

            pGlobeViewUtil.WindowToGeographic(pGlobeDisplay, pViewer, x, y, true, out dLon, out dLat, out dAlt);
            Core.Model.MapLngLat lnglat = new Core.Model.MapLngLat(dLon, dLat, dAlt);
            return(lnglat);
        }
Beispiel #12
0
        /// <summary>
        /// 定位
        /// </summary>
        /// <param name="lngLat"></param>
        /// <param name="zoomLevel"></param>
        public void ZoomToPosition(Core.Model.MapLngLat lngLat, int?zoomLevel = null)
        {
            ISceneViewer m_ActiveView = mapControl.Globe.GlobeDisplay.ActiveViewer;
            IEnvelope    enve         = new EnvelopeClass();

            enve.PutCoords(lngLat.Lng, lngLat.Lat, lngLat.Lng, lngLat.Lat);
            enve.ZMin = lngLat.Alt * 10;
            enve.ZMax = lngLat.Alt * 10;
            mapControl.GlobeCamera.SetToZoomToExtents(enve, mapControl.Globe, m_ActiveView);
            m_ActiveView.Redraw(false);
        }
Beispiel #13
0
        /// <summary>
        /// 更新某个坐标点
        /// </summary>
        /// <param name="oldLngLat"></param>
        /// <param name="newLngLat"></param>
        /// <returns></returns>
        public bool UpdatePosition(Core.Model.MapLngLat oldLngLat, Core.Model.MapLngLat newLngLat)
        {
            var index = listPoint.FindIndex(o => o.Lng == oldLngLat.Lng && o.Lat == oldLngLat.Lat);

            if (index == -1)
            {
                return(false);
            }
            listPoint[index] = newLngLat;

            return(DrawNewPolygon(listPoint));
        }
Beispiel #14
0
        /// <summary>
        /// 标牌移动移动线的位置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void mapLabel_Move(object sender, EventArgs e)
        {
            IPoint targetPoint = base.Geometry as IPoint;

            Core.Model.MapLngLat startPoint = new Core.Model.MapLngLat(targetPoint.X, targetPoint.Y);//目标点

            MapFrame.ArcMap.Windows.MapLabel label = sender as MapFrame.ArcMap.Windows.MapLabel;
            IPoint labelLocation = mapControl.ToMapPoint(label.Location.X, label.Location.Y);

            Core.Model.MapLngLat endPoint = new Core.Model.MapLngLat(labelLocation.X, labelLocation.Y);//标牌点

            MapFrame.Core.Interface.IMFElement element = BelongLayer.GetElement("标牌线");
            if (element == null)
            {
                return;
            }
            IMFLine lineElement = element as IMFLine;
            List <Core.Model.MapLngLat> lnglatList = new List <Core.Model.MapLngLat>();

            lnglatList.Add(startPoint);
            lnglatList.Add(endPoint);
            lineElement.UpdatePosition(lnglatList);//更新位置
        }
Beispiel #15
0
 /// <summary>
 /// 更新圆心坐标
 /// </summary>
 /// <param name="centerDot"></param>
 public void UpdatePosition(Core.Model.MapLngLat centerDot)
 {
     this.listPoint[0] = centerDot;
     DrawNewCircle(listPoint);
 }
Beispiel #16
0
 /// <summary>
 /// 跳转
 /// </summary>
 /// <param name="lngLat">经纬度</param>
 /// <param name="zoomLevel">显示比例</param>
 public void ZoomToPosition(Core.Model.MapLngLat lngLat, int?zoomLevel = null)
 {
     ReleaseTool();
     mapControl.moveMapTo(lngLat.Lng, lngLat.Lat);
 }
Beispiel #17
0
 /// <summary>
 /// 更新位置
 /// </summary>
 /// <param name="lngLat">经纬度</param>
 public void UpdatePosition(Core.Model.MapLngLat lngLat)
 {
     mapControl.setMoveObjectPositon(moveObj, lngLat.Lng, lngLat.Lat, 1);
     Update();
 }
Beispiel #18
0
 /// <summary>
 /// 更新位置
 /// </summary>
 /// <param name="lngLat">经纬度</param>
 public void UpdatePosition(Core.Model.MapLngLat lngLat)
 {
     this.UpdatePosition(lngLat.Lng, lngLat.Lat, lngLat.Alt);
 }
Beispiel #19
0
 /// <summary>
 /// 定位
 /// </summary>
 /// <param name="lngLat">经纬度</param>
 /// <param name="zoomLevel"></param>
 public void ZoomToPosition(Core.Model.MapLngLat lngLat, int?zoomLevel = null)
 {
     ESRI.ArcGIS.Geometry.IPoint point = new PointClass();
     point.PutCoords(lngLat.Lng, lngLat.Lat);
     mapControl.CenterAt(point);
 }