打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
GlobeControl与MapC ontrol同步

在GIS开发过程中,难免会遇到各种各样的需求,而作为程序员的我们就必须要想方设法把这些需求转换为功能实现,遇到奇怪的要求只能一边郁闷一边着手。。。

       抱怨到此为止,由此入正题。之前有遇到MapControl与PageLayoutControl的同步问题,这倒不是什么难题,ArcGISEngine的SDK中有实例介绍。但这次是MapControl与GlobeControl的同步。经过一段时间的研究,终是找到了解决办法,虽然有些笨拙,但为后来者提供学习还是可以的,望见谅!以下是实例代码:

            IScene scene = GlobeControl.Globe.GlobeDisplay.Scene;
            ISceneViewer sceneViewer = GlobeControl.Globe.GlobeDisplay.ActiveViewer;

            IGlobeCamera pGlobeCamera = sceneViewer.Camera as IGlobeCamera;
            IGlobeViewUtil pGlobeViewUtil = pGlobeCamera as IGlobeViewUtil;
            IEnvelope pEnvelope = new EnvelopeClass();

            pGlobeViewUtil.QueryVisibleGeographicExtent(pEnvelope);//得到GlobeControl的Extent
            
            IPoint minPoint = new PointClass();
            minPoint = GetProjectPoint(pEnvelope.XMin, pEnvelope.YMin);//获得从投影变换后的得到的平面坐标
            (minPoint as IZAware).ZAware = true;
            minPoint .Z = pEnvelope.ZMin;
            IPoint maxPoint = new PointClass();
            maxPoint = GetProjectPoint(pEnvelope.XMax, pEnvelope.YMax);
            (maxPoint as IZAware).ZAware = true;
            maxPoint.Z = pEnvelope.ZMax;
            IEnvelope GeoEnvelope = new EnvelopeClass();

            //设置平面Extent
            GetEnvelope(minPoint,maxPoint,out GeoEnvelope);

            //将得到的Envelope赋值给MapControl

             MapControl.ActiveView.Extent = GeoEnvelope;
             MapControl.ActiveView.Activate(MapControl.hWnd);
             MapControl.ActiveView.Refresh();

    简单介绍这段程序的使用,当在TapControl中从GlobeControl到MapControl的切换时,以上的代码就能实现位置同步。

     而从MapControl到GlobeControl即可用IGlobeCamera.SetToZoomToExtents方法就能够实现。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
在地图屏幕上绘制点、线、面符号
<%= %>、<%# %>与<%$ %>的区别。
在MapControl初始化完成后调用自定义事件的方法
C#.net 地图控件开发(十一) 地图控件MapControl
GlobeControl轨道飞行工具和显示指北针
【新提醒】Revit二次开发 RevitLookUp安装说明
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服