首页 > 其他 > 详细

WPF+ArcGIS 静态、动态定位(静态、动态书签)

时间:2014-03-21 18:25:05      阅读:404      评论:0      收藏:0      [点我收藏+]

先看下效果(视频有点虚,将就这看。。):

 

 

//读取当前所有书签名称 public static List<String> LoadBookmarks(ISceneBookmarks pSceneBookmarks)         {             List<String> bookmark =new List<string> ();             //Search through all the bookmarks             ESRI.ArcGIS.esriSystem.IArray array = pSceneBookmarks.Bookmarks;             for (int i = 0; i < array.Count; i++)             {                 ESRI.ArcGIS.Analyst3D.IBookmark3D bookmark3D = (ESRI.ArcGIS.Analyst3D.IBookmark3D)array.get_Element(i); // Explicit Cast                 bookmark.Add(bookmark3D.Name);
            }
            return bookmark;         }

//创建一个新的书签

private string CreateNewBookmarkName(IGlobe pGlobe)         {             //Add the bookmark to the sceneBookmarks             ESRI.ArcGIS.Analyst3D.ISceneBookmarks sceneBookmarks = (ESRI.ArcGIS.Analyst3D.ISceneBookmarks)pGlobe;             string sName = "书签" + Convert.ToString(sceneBookmarks.BookmarkCount+1);             sName = TheSameName(sName, pGlobe);     //检查是否书签有重名,如果有,自动在后面+"_1"             return sName;         }

/// <summary>         /// 追加一个书签到场景 /// </summary>         /// <param name="bookmarkName">A System.String that is the name of the bookmark to add to the collecton.</param>         /// <param name="pGlobe">The IGlobe interface used in setting up the Bookmark3D.</param>         /// <returns>An ISceneBookmarks interface. </returns>         /// <remarks>Scenebookmarks are used to store visual snapshots (orientation, zoom level, etc.) for a Scene.</remarks>         private ESRI.ArcGIS.Analyst3D.ISceneBookmarks AddBookmark3DToSceneBookmarks(System.String bookmarkName, IGlobe pGlobe)         {

            //Create the bookmark             ESRI.ArcGIS.Analyst3D.IBookmark3D bookmark3D = new ESRI.ArcGIS.Analyst3D.Bookmark3DClass();             bookmark3D.Name = bookmarkName;             bookmark3D.Capture(pGlobe.GlobeDisplay.ActiveViewer.Camera);

            //Add the bookmark to the sceneBookmarks             ESRI.ArcGIS.Analyst3D.ISceneBookmarks sceneBookmarks = (ESRI.ArcGIS.Analyst3D.ISceneBookmarks)pGlobe;             sceneBookmarks.AddBookmark(bookmark3D);

            return sceneBookmarks;         }

//删除选中的书签 private void btnRemoveBookmark_Click(object sender, EventArgs e)         {             //string sBookmarkName = lstBookmarks.SelectedItem as string;             ESRI.ArcGIS.Analyst3D.ISceneBookmarks sceneBookmarks = (ESRI.ArcGIS.Analyst3D.ISceneBookmarks)m_pGlobe;             IBookmark3D pBookmark3D = null;             //sceneBookmarks.FindBookmark(sBookmarkName, out pBookmark3D);             if (pBookmark3D != null)             {                 sceneBookmarks.RemoveBookmark(pBookmark3D);             }             //LoadBookmarks(sceneBookmarks, true);         }

   //根据书签的名称定位

private void BookLightZoom(string bookLightName)         {

            ESRI.ArcGIS.Analyst3D.ISceneBookmarks sceneBookmarks = (ESRI.ArcGIS.Analyst3D.ISceneBookmarks)this._AxGlobeControl.Globe;             IBookmark3D pBookmark3D = null;             sceneBookmarks.FindBookmark(bookLightName, out pBookmark3D);             if (pBookmark3D == null)                 return;             //缩放到书签 //pBookmark3D.Apply(m_pGlobe.GlobeDisplay.ActiveViewer as ISceneViewer, true, 3.0);     //无动态效果 GlobeUtility.ZoomToBookmark(this._AxGlobeControl.Globe.GlobeDisplay, pBookmark3D, 3);  //有动态效果,关于GlobeUtility想要的请加群,代码太多没办法贴出不方便。 }

/// <summary>         /// 得到书签 /// </summary>         /// <param name="pSceneBookmarks"></param>         private void LoadBookmarks(ISceneBookmarks pSceneBookmarks)         {
            //Search through all the bookmarks             ESRI.ArcGIS.esriSystem.IArray array = pSceneBookmarks.Bookmarks;             System.Int32 bookmarkIndex = 0;             System.Int32 i = array.Count;             for (bookmarkIndex = 0; bookmarkIndex < i; bookmarkIndex++)             {                 ESRI.ArcGIS.Analyst3D.IBookmark3D bookmark3D = (ESRI.ArcGIS.Analyst3D.IBookmark3D)array.get_Element(bookmarkIndex); // Explicit Cast                                //lstBookmarks.Items.Add(bookmark3D.Name);             }         }

在窗体去调用这个 /// <summary>         ///  窗体初始化对书签的加载 /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         private void BookLightLoad()         {             ESRI.ArcGIS.Analyst3D.ISceneBookmarks pSceneBookmarks = (ESRI.ArcGIS.Analyst3D.ISceneBookmarks)m_pGlobe;             LoadBookmarks(pSceneBookmarks);         }

 

WPF、AE技术交流群:94234450  

 

WPF+ArcGIS 静态、动态定位(静态、动态书签),布布扣,bubuko.com

WPF+ArcGIS 静态、动态定位(静态、动态书签)

原文:http://www.cnblogs.com/BeiJing-Net-DaiDai/p/3616158.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!