当前位置: 代码迷 >> Web前端 >> Openlayers学习札记――Format, Protocol, Strategy类
  详细解决方案

Openlayers学习札记――Format, Protocol, Strategy类

热度:674   发布时间:2012-08-25 10:06:20.0
Openlayers学习笔记――Format, Protocol, Strategy类
   为了创建更有用的应用,我们介绍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策略对象也被使用,但本质上在矢量图层上请求了一次要素,没有再次要素请求。
  相关解决方案