为了创建更有用的应用,我们介绍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()]
});
上述代码使用了HTTP协议、GeoJSON格式,值得注意的是什么格式实际上是协议对象的一部分,Fixed策略对象也被使用,但本质上在矢量图层上请求了一次要素,没有再次要素请求。