網上下載的openscales代碼,demo很少,且演示的不夠清晰,云里霧里的,干脆老辦法,直接讀碼。
兩年前沒有用openlayers時,接觸了google的map api,覺得很好,照著功能花了1個月左右時間用as3開發了一個flex的地圖顯示庫,當然只能與自己開發的后端地圖服務做接口通信(當初是用wx開發地圖渲染,amf+php做webservice端接入,兩者之間用 ice for php 實現進程間通信,并由php將tile回傳到flex地圖庫來展示,之后還用wx在wince下做了個地圖展示的版本)。想想那個時候是多么的傻,有著wms,wfs等標準不用而自己去做不通用的東西。
SDL用于定義地圖Feature對象繪制時的屬性參數,有個叫Symbolizer的東東抽象了繪制操作
當然SDL里面處理POINT,LINE,POLYGON之外就是Bitmap了,或者是幾種類型的組合。
剛接觸SDL的時候是玩Geoserver的時候,看著Geoserver關于SDL的help資料,回顧一下以前公司做導航軟件是那些feature的定義是那樣的不自然,都是統統寫死在代碼里面,或者是一個txt的文本文件,或者xml算是最靈活的了,但跟sdl規范來比對的話顯得比較弱智。
手工寫SDL是很痛苦的事情,有個開源軟件叫udig,是個opengis的軟件,里面就攜帶了圖形化定義feature產生xml代碼的功能,也是玩了玩,之后對geoserver失望之后自己寫地圖繪制引擎,參照了sdl的規范自己實現了一個準sdl規則來描述feature的symbolizer加入了繪制引擎,靈活性擴展還是不錯。
在openscales代碼里找FeatureLinede的功能,為了在之后的gis項目中顯示移動目標對象路徑只用,代碼跳躍了幾次,呵呵,看到了openscales對SDL的實現版本 ,org.openscales.core/style 里面的stroke,fill,marker,symbolizer真是對sdl實現的很好的參照代碼藍本。如果了解SDL規范的話,這些代碼應該不用十分care,因為都比較簡單,記住使用接口就可以了
WellKnownMarker支持的類型還真跟SDL規范一樣,沒新的類型加入(square,circle,triangle,star,cross)