Esempio n. 1
0
 private void axMapControl_OnDoubleClick(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnDoubleClickEvent e)
 {
     if (this.m_Application.CurrentTool != null)
     {
         this.m_CurrentTool = this.m_ToolCol[this.m_Application.CurrentTool];
         this.m_CurrentTool.OnDblClick();
     }
 }
Esempio n. 2
0
        private void axMapControl1_OnDoubleClick(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnDoubleClickEvent e)
        {
            //设置三维视角
            IActiveView pActiveView = axMapControl1.ActiveView;
            //IActiveView pActiveView1 = this.axMapControl1 as IActiveView;   //获取当前二维活动区域
            //IEnvelope pEnv = pActiveView1 as IEnvelope;      //将此二位区域的Extent 保存在Envelope中
            IActiveView pActiveView1 = this.axMapControl1.Map as IActiveView;                      //获取当前二维活动区域
            IEnvelope   pEnv         = pActiveView1.Extent as IEnvelope;                           //将此二位区域的Extent 保存在Envelope中
            IPoint      point        = new PointClass();                                           //将此区域的中心点保存起来

            point = GetGeo(pActiveView, (pEnv.XMax + pEnv.XMin) / 2, (pEnv.YMax + pEnv.YMin) / 2); //取得视角中心点X坐标

            ICamera pCamera = this.axSceneControl1.Camera;                                         //取得三维活动区域的Camara      ,就像你照相一样的视角,它有Taget(目标点)和Observer(观察点)两个属性需要设置
            IPoint  ptTaget = new PointClass();                                                    //创建一个目标点

            ptTaget   = point;                                                                     //视觉区域中心点作为目标点
            ptTaget.Z = 0;                                                                         //设置目标点高度,这里设为 0米

            IPoint ptObserver = new PointClass();                                                  //创建观察点 的X,Y,Z

            ptObserver.X = point.X;                                                                //设置观察点坐标的X坐标
            ptObserver.Y = point.Y + 2;                                                            //设置观察点坐标的Y坐标(这里加90米,是在南北方向上加了90米,当然这个数字可以自己定,意思就是将观察点和目标点有一定的偏差,从南向北观察
            double height = 10;                                                                    //计算观察点合适的高度,这里用三目运算符实现的,效果稍微好一些,当然可以自己拟定

            ptObserver.Z = height;                                                                 //设置观察点坐标的Y坐标

            // ptObserver = GetProject(pActiveView1, pCamera.Observer.X, pCamera.Observer.Y);
            pCamera.Target      = ptTaget;                                    //赋予目标点
            pCamera.Observer    = ptObserver;                                 //将上面设置的观察点赋予camera的观察点
            pCamera.Inclination = 15;                                         //设置三维场景视角,也就是高度角,视线与地面所成的角度
            pCamera.Azimuth     = 180;                                        //设置三维场景方位角,视线与向北的方向所成的角度
            axSceneControl1.SceneGraph.RefreshViewers();                      //刷新地图,(很多时候,看不到效果,都是你没有刷新)

            System.Timers.Timer t = new System.Timers.Timer();                //500ms空隙
            t.Elapsed  += new System.Timers.ElapsedEventHandler(sceneRotate); //调用函数
            t.AutoReset = false;                                              //是否循环调用
            t.Enabled   = true;                                               //是否调用
            t.Start();
        }