Ejemplo n.º 1
0
        private void UpdateBookmarks()
        {
            //Get bookmarks from Scene
            ISceneBookmarks bookmarks = (ISceneBookmarks)axSceneControl1.Scene;

            m_Bookmarks = null;
            m_Bookmarks = bookmarks.Bookmarks;
            lstBookmarks.Items.Clear();
            bool haveBookmarks = false;

            IBookmark3D bookmark3d;

            if (m_Bookmarks != null)
            {
                //Add the bookmark names to the listbox in the same order as they are in the Scene Document
                for (int i = 0; i <= m_Bookmarks.Count - 1; i++)
                {
                    bookmark3d = (IBookmark3D)m_Bookmarks.get_Element(i);
                    lstBookmarks.Items.Add(bookmark3d.Name);
                }
                haveBookmarks        = m_Bookmarks.Count != 0;
                lstBookmarks.Enabled = true;
            }

            if (haveBookmarks == false)
            {
                //No bookmarks available
                lstBookmarks.Items.Add("<No Bookmarks Available>");
                lstBookmarks.Enabled = false;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 删除选中的书签
        /// </summary>
        /// <param name="sceneBookmarks"></param>
        /// <param name="bookmarkName"></param>
        private void RemoveBookmark(ISceneBookmarks sceneBookmarks, string bookmarkName)
        {
            IBookmark3D bookmark = new Bookmark3DClass();

            sceneBookmarks.FindBookmark(bookmarkName, out bookmark);
            sceneBookmarks.RemoveBookmark(bookmark);
            ShowAllBookmarkNameToList(sceneBookmarks);
        }
Ejemplo n.º 3
0
        // 创建书签
        private void barButtonItem19_ItemClick(object sender, ItemClickEventArgs e)
        {
            using (frmBookmarkAdd frm = new frmBookmarkAdd())
            {
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    // 创建书签
                    ISceneBookmarks pBookmarks  = MainCtrl.GlobeMapContainer.globeCtrl.axGlobeControl1.Globe.GlobeDisplay.Scene as ISceneBookmarks;
                    ICamera         camera      = MainCtrl.GlobeMapContainer.globeCtrl.axGlobeControl1.Globe.GlobeDisplay.ActiveViewer.Camera;
                    string          name        = frm.GetName();
                    string          remark      = frm.GetRemark();
                    IBookmark3D     pBookmark3D = new Bookmark3DClass();
                    pBookmark3D.Name = name;
                    pBookmark3D.Capture(camera);
                    pBookmarks.AddBookmark(pBookmark3D);

                    // 保存书签
                    Bookmark bm = new Bookmark();
                    bm.Altitude        = camera.Observer.Z;
                    bm.Azimuth         = camera.Azimuth;
                    bm.Inclination     = camera.Inclination;
                    bm.Latitude        = camera.Observer.Y;
                    bm.Longitude       = camera.Observer.X;
                    bm.Name            = name;
                    bm.Remark          = remark;
                    bm.RollAngle       = camera.RollAngle;
                    bm.Show            = "true";
                    bm.ViewFieldAngle  = camera.ViewFieldAngle;
                    bm.ViewingDistance = camera.ViewingDistance;

                    string       xmlFile      = AppDomain.CurrentDomain.BaseDirectory + "Config\\Bookmark.xml";
                    BookmarkList bookmarkList = null;
                    if (File.Exists(xmlFile))
                    {
                        bookmarkList = XmlHelper.XmlDeserializeFromFile <BookmarkList>(xmlFile, Encoding.UTF8);
                    }

                    if (bookmarkList == null)
                    {
                        bookmarkList = new BookmarkList();
                        bookmarkList.BookmarkArr.Add(bm);
                    }
                    else
                    {
                        bookmarkList.BookmarkArr.Add(bm);
                    }
                    // 发布事件,通知主窗体添加按钮
                    EventPublisher.PublishShowBookmarkEvent(this, new ShowBookmarkEventArgs()
                    {
                        NameList = new System.Collections.Generic.List <string> {
                            name
                        }, Append = true
                    });
                    // 将书签信息保存到xml配置文件
                    XmlHelper.XmlSerializeToFile(bookmarkList, xmlFile, Encoding.UTF8);
                }
            }
        }
Ejemplo n.º 4
0
        public void CraeteBookmark(string markName)
        {
            ISceneBookmarks pBookmarks  = globe.GlobeDisplay.Scene as ISceneBookmarks;
            IBookmark3D     pBookmark3D = new Bookmark3DClass();

            pBookmark3D.Name = markName;
            pBookmark3D.Capture(globe.GlobeDisplay.ActiveViewer.Camera);
            pBookmarks.AddBookmark(pBookmark3D);
            m_bookmarkName = markName;
        }
Ejemplo n.º 5
0
 private void SaveBookmarkDatFile(string filePath, ISceneBookmarks _SceneBookmarks)
 {
     try
     {
         IObjectStream pObjStream = new ObjectStreamClass();
         _SceneBookmarks.SaveBookmarks(pObjStream.Stream);
         IMemoryBlobStream pMemBlobStream = pObjStream.Stream as IMemoryBlobStream;
         pMemBlobStream.SaveToFile(filePath);
     }
     catch { }
 }
Ejemplo n.º 6
0
        private void cmdCaptureBookmark_Click(object sender, System.EventArgs e)
        {
            IBookmark3D bookmark3d = new Bookmark3DClass();

            bookmark3d.Name = txtNewBookmarkName.Text;
            bookmark3d.Capture(axSceneControl1.Camera);
            ISceneBookmarks bookmarks = (ISceneBookmarks)axSceneControl1.Scene;

            bookmarks.AddBookmark(bookmark3d);

            UpdateBookmarks();
        }
Ejemplo n.º 7
0
 private void LoadBookmarkDatFile(string filePath, ISceneBookmarks _SceneBookmarks)
 {
     try
     {
         IMemoryBlobStream pMemoryBlobStream = new MemoryBlobStreamClass();
         pMemoryBlobStream.LoadFromFile(filePath);
         IObjectStream pObjectStream = new ObjectStreamClass();
         pObjectStream.Stream = pMemoryBlobStream as IStream;
         _SceneBookmarks.LoadBookmarks(pObjectStream.Stream);
     }
     catch { }
 }
Ejemplo n.º 8
0
        // 初始化书签
        private void InitBookmark()
        {
            return;

            string xmlFile = AppDomain.CurrentDomain.BaseDirectory + "Config\\Bookmark.xml";

            if (!File.Exists(xmlFile))
            {
                return;
            }

            BookmarkList bookmarkList = XmlHelper.XmlDeserializeFromFile <BookmarkList>(xmlFile, Encoding.UTF8);

            if (bookmarkList == null || bookmarkList.BookmarkArr == null || bookmarkList.BookmarkArr.Count <= 0)
            {
                return;
            }

            List <string> names = new List <string>();

            foreach (Bookmark mark in bookmarkList.BookmarkArr)
            {
                // 创建书签
                ISceneBookmarks pBookmarks = axGlobeControl1.Globe.GlobeDisplay.Scene as ISceneBookmarks;
                IPoint          point      = new PointClass();
                point.X = mark.Longitude;
                point.Y = mark.Latitude;
                point.Z = mark.Altitude;

                ICamera camera = new CameraClass();
                camera.ProjectionType  = esri3DProjectionType.esriPerspectiveProjection;
                camera.Inclination     = mark.Inclination;
                camera.Azimuth         = mark.Azimuth;
                camera.RollAngle       = mark.RollAngle;
                camera.ViewFieldAngle  = mark.ViewFieldAngle;
                camera.ViewingDistance = mark.ViewingDistance;
                camera.Observer        = point;

                IBookmark3D pBookmark3D = new Bookmark3DClass();
                pBookmark3D.Name = mark.Name;
                pBookmark3D.Capture(camera);
                pBookmarks.AddBookmark(pBookmark3D);

                // 发布事件,通知主窗体添加按钮
                EventPublisher.PublishShowBookmarkEvent(this, new ShowBookmarkEventArgs()
                {
                    NameList = new System.Collections.Generic.List <string> {
                        mark.Name
                    }, Append = true
                });
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 使书签在listBox中显示方法
        /// </summary>
        /// <param name="sceneBookmarks"></param>
        private void ShowAllBookmarkNameToList(ISceneBookmarks sceneBookmarks)
        {
            //创建
            IArray bookmarkArray = sceneBookmarks.Bookmarks;

            for (int i = 0; i < bookmarkArray.Count; i++)
            {
                System.Object oo       = bookmarkArray.get_Element(i);
                IBookmark3D   bookmark = oo as IBookmark3D;
                //
                listBox1.Items.Add(bookmark.Name);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 添加书签方法,使用bookmark3D接口和ISceneBookmarks接口
        /// </summary>
        /// <param name="bookmarkName">书签名称</param>
        /// <param name="camera">相机</param>
        /// <param name="scene">视图</param>
        /// <returns>返回一个场景图</returns>
        private ISceneBookmarks AddBookmark3DToSceneBookmarks(string bookmarkName, ICamera camera, IScene scene)
        {
            IBookmark3D bookmark3D = new Bookmark3DClass();

            bookmark3D.Name = bookmarkName; //获得书签名
            bookmark3D.Capture(camera);     //捕获相机
            //创建ISceneBookmarks对象,并将摄影机当前位置添加到里面
            ISceneBookmarks sceneBookmarks = scene as ISceneBookmarks;

            sceneBookmarks.AddBookmark(bookmark3D);
            //返回当前场景
            return(sceneBookmarks);
        }
Ejemplo n.º 11
0
        private string strBtnAhead = "btn_";    //给书签名称自动加上“btn_"
        //private string DatFilePath = "";        //书签保存位置

        public SceneBookmark(AxGlobeControl _axGlobeControl, ButtonItem _btnItem, EventHandler _btnItem_Click)
        {
            try
            {
                this.axGlobeControl    = _axGlobeControl;
                this.btnItem           = _btnItem;
                this.btnItemClickEvent = _btnItem_Click;

                pGlobeDisplay   = this.axGlobeControl.GlobeDisplay;
                pScene          = pGlobeDisplay.Scene;
                pSceneBookmarks = pScene as ISceneBookmarks;

                BookmarkCount = pSceneBookmarks.BookmarkCount;      //bookmark的个数

                //DatFilePath = Application.StartupPath + "\\Data\\Bookmark.dat"; //书签的保存位置

                //LoadBookmarkDatFile(DatFilePath, pSceneBookmarks);  //加载场景书签【有错误,停用】
            }
            catch { }
        }
Ejemplo n.º 12
0
 private void btnAddBookmark_Click(object sender, EventArgs e)
 {
     try
     {
         if (textBox1.Text == "")
         {
             MessageBox.Show("书签名字不能为空!!");
             return;
         }
         listBox1.Items.Clear();
         string  bookmarkName = textBox1.Text;
         IScene  scene        = m_Globe as IScene;
         ICamera camera       = m_SceneView.Camera;
         m_SceneBookmarks = AddBookmark3DToSceneBookmarks(bookmarkName, camera, scene);
         //int i = m_SceneBookmarks.BookmarkCount;
         //MessageBox.Show(i.ToString());
         ShowAllBookmarkNameToList(m_SceneBookmarks);
         textBox1.Text = "";
     }
     catch { }
 }
Ejemplo n.º 13
0
        private List <string> getBookmarksNames(ISceneBookmarks _SceneBookmarks)
        {
            List <string> bookmarksNames = new List <string>();

            try
            {
                if (_SceneBookmarks.BookmarkCount == 0)
                {
                    return(bookmarksNames);
                }

                for (int index = 0; index < BookmarkCount; index++)
                {
                    IBookmark3D pBookmark3D = _SceneBookmarks.Bookmarks.get_Element(index) as IBookmark3D;
                    bookmarksNames.Add(strBtnAhead + pBookmark3D.Name);
                }

                return(bookmarksNames);
            }
            catch
            {
                return(bookmarksNames);
            }
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 添加新的场景
        /// </summary>
        /// <param name="sceneName">场景名称</param>
        private void AddNewBookmarkScene(string sceneName, IGlobeDisplay _GlobeDisplay, ISceneBookmarks _SceneBookmarks)
        {
            try
            {
                //sBookName = sBookName + "|创建日期:" + DateTime.Today.ToShortDateString() + ",时间:" + DateTime.Now.ToLongTimeString();

                ICamera camera = _GlobeDisplay.ActiveViewer.Camera;

                IBookmark3D p3DBookmark = new ESRI.ArcGIS.Analyst3D.Bookmark3D();
                p3DBookmark.Name = sceneName;
                p3DBookmark.Capture(camera);
                _SceneBookmarks.AddBookmark(p3DBookmark);
            }
            catch { }
        }