為了建立更有用的應用,我們介紹Formate、Protocol、Strategy三個類,我們可以更深層次的控制矢量圖層的行為。
這三個類的作用:
% 從外部資源加載資料如KML檔案、GeoJSON檔案、WFS服務等;
% 以一定的格式儲存使用者建立要素;
% 采用叢集政策對多數點進行分組;
% 建立更多互動功能的網絡應用程式。
1.簡單介紹三個類
% Protocol類
Protocol類控制矢量圖層怎麼與資料源交流,Protocol.HTTP和Protocol.WFS是Protocol的兩個子類,HTTP協定類能夠直接與矢量資料源連接配接,WFS協定能夠連接配接WFS服務。
% Format類
Formate類可以将指定的資料檔案(KML檔案)轉化為地圖中顯示的要素對象,還可以将要素對象轉化成指定檔案格式,如KML、GeoJSON等。OpenLayers的開發者版本支援更多地資料格式和協定。
更重要的一點是,Format類處理要素資料的序列化和煩序列化,序列化是程式設計中常用的術語,目的是為了提取代碼中的對象,将對象轉換成指定形式,如檔案、可讀性字元串。這樣這些對象就能在代碼外被調用。反序列化是個相反的過程——将檔案或者字元串轉換成代碼中的對象。
% Strategy類
Strategy類是用來控制伺服器請求的建立和伺服器傳回資料的處理。Strategy類本身是基類,有很多子類可以引用,如Strategy.BBOX和Strategy.Cluster,不同于Protocol類和Format類的可單獨使用,Strategy類需要多個strategies一起使用。
就以BBOX類為例說明一下,我們可以通過BBOX政策向伺服器請求可視範圍内的地圖,是以,BBOX首先決定怎麼建立請求,另一件事就是控制從伺服器傳回的資料的處理問題。
3. 三個類應用
%首先建立相關對象
map對象
%建立vector對象
var vector_layer =new OpenLayers.Layer.Vector('More Advances Vector Layer',
{
protocol:new OpenLayers.Protocol.HTTP({
url:'some_data.json',
format: new OpenLayers.Format.GeoJSON({})
}),
strategies:[new OpenLayers.Strategy.Fixed()]
});