您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關TE二次開發中如何實現地圖點擊的過濾的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
在TE的二次開發中,通過掛接鼠標的點擊事件OnLButtonClicked,實現在三維地圖上鼠標點擊,此事件的返回為Flags(鼠標的點擊方式)、X(三維地圖的屏幕橫向坐標)、Y(三維地圖的屏幕縱向坐標),根據x、y的坐標,使用Window下的PixelToWorld方法,可以獲得一個IWorldPointInfo的對象,里邊包含一個對象的id(ObjectID),在沒有點中地圖對象的時候,為空,一個當前鼠標點擊的地理空間位置(IPosition)和點擊的場景對象類型(Type)。
在開發中,有時需要根據點擊的對象,顯示彈出的氣泡信息,或者執行地圖中的一些操作,首先,要獲得對象,就要判斷對象的ObjectID不能為空,從而才能使用GetObject的方法(在Creator和ProjectTree中都有,id統一后,作用相同),獲取點擊的對象,不然會報錯。
獲得對象后,可以判斷對象的類型,是標簽、線或者面等等,因為鼠標的點擊在地圖上的對象都可以獲取,所以要根據對象所處的文件夾,矢量數據要根據圖層名稱的判斷,是否響應鼠標的點擊。
在ProjectTree的接口中,可以根據GetNextItem的方法,判斷單個對象的父節點,也就是上層Group的id,再使用GetItemName方法,獲取Group的名稱,進行判斷,從而顯示相應信息。
對于圖層中的對象,根據id,獲取后的對象為IFeature,此對象中有包含圖層的LayerID,獲得圖層的id后,同樣可以使用GetItemName方法,獲得圖層的名稱,進行圖層信息過濾。
當然,在GetObject獲得對象,也可以根據對象的類型來進行控制。
單個對象包含主要屬性信息,是對象的tree名稱,這可以作為關鍵字來返回信息,也可以在ClientData中進行信息寫入讀取。
圖層中包含著屬性,可根據屬性信息進行關聯,而且圖層中所包含的信息可以進行靈活控制。
感謝各位的閱讀!關于“TE二次開發中如何實現地圖點擊的過濾”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。