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