ArcGIS Engine開發-自定義圖層類型
用ArcGIS Engine開發的一個特別就是面向接口編程,每組接口代表了對象在某個方面的特性,表現為一個方法、屬性或事件。要定義自己的圖層類型,實際上只需要實現ILayer接口就可以了。該接口的主要方法或屬生包括:
public IEnvelope AreaOfInterest {get;}
public void Draw (
esriDrawPhase DrawPhase,
IDisplay Display,
ITrackCancel trackCancel
)
public void SpatialReference {set;}
public string get_TipText (
double x,
double y,
double Tolerance
);
等等,請直接查閱幫助。
但實現了該接口,圖層只是能加入以地圖中,并顯示出來而已。如果你要自定義的圖層類型是矢量要素的話,最好直接實現IFeatureLayer。由于IFeatureLayer從ILayer繼承而來,所以也包含了上述方法或屬性。同時還可以支持選擇,查詢等操作了。
實現了IFeatureLayer,還不能支持圖層渲染功能。要想支持圖層渲染,得實現IGeoFeatureLayer接口,該接口從IFeatureLayer繼承而來,所以也包含IFeatureLayer所支持的所有方法屬性。
如果要支持屬性表功能的話,得實現ITable接口。
如果希望圖層信息能保存到MXD文檔中,得實現IPersistStream接口。
由此可見,在ArcGIS Engine中,要實現自定義圖層類型,并不是一件不可能的事。雖然會比較煩瑣,但思路卻非常清晰。本人就通過這種思路設計了一種組合圖層,可以同時包含點線面多種圖形,但在TOCControl中只表現為一個圖層。當然,這個工作要簡單輕松一些,但還是富有樂趣的~
浙公網安備 33010602011771號