zoukankan      html  css  js  c++  java
  • 【Openlayers】OL中加载矢量切片,可有效解决大数据量的问题

    1.首先我们对矢量数据进行切片 可使用tilestache 

    win7下使用TileStache生成geojson格式的Tiles

    这个是预先切好的数据
    也可以实时去获取切片数据(使用OL-- utfgrid)详见http://blog.perrygeo.net/2012/02 ... ers-and-tilestache/

    2.下面讲下在Openlayers中如何加载预先切好的数据

      添加OL的策略拓展文件 OpenLayers.Strategy.Grid.js

    加载图层:

    var style = new OpenLayers.Style();
              var ruleAmenity = new OpenLayers.Rule({
                   symbolizer: {fillColor: 'none', strokeOpacity: 0, pointerEvents: 'all'}
               });
             
               style.addRules([ruleAmenity]);
              var styleMap = new OpenLayers.StyleMap({
                  'default': style,
                  'select': new OpenLayers.Style({
                      strokeWidth: 5,
                      strokeColor: "blue",
                      strokeOpacity: 1
                  })
              });
            var baseName = "http://localhost/basicmap/data/${z}/${x}/${y}";
            format = new OpenLayers.Format.GeoJSON();
            strategy = new OpenLayers.Strategy.Grid();
            protocol = new OpenLayers.Protocol.HTTP({
                url: baseName + ".geojson",
                format: format
            });
            vectors = new OpenLayers.Layer.Vector("Vector", {
                strategies: [strategy],
                protocol: protocol,
                styleMap:styleMap,
                projection: new OpenLayers.Projection("EPSG:4326")
            });
        this.map.addLayer(vectors);
        var options = {
                   hover: true
               };
               var select = new OpenLayers.Control.SelectFeature(vectors, options);
               this.map.addControl(select);
               select.activate();
    下面说下要注意的几点:
    1.默认下tilestache切出的数据是按EPSG:900913投影切的
      所以我这里的map也是EPSG:900913投影
        var mapOptions = {
            maxExtent : new OpenLayers.Bounds(-20037508.3427892, -20037508.3427892,
            20037508.3427892, 20037508.3427892),
            numZoomLevels : 19,
            maxResolution : 156543.0339,
             controls: [],
            units : 'm',
            projection : "EPSG:900913",
            displayProjection : new OpenLayers.Projection("EPSG:4326"),
            theme : 'css/OlTheme/default/style.css'
             };
        this.map = new OpenLayers.Map('map', mapOptions);

    加载geojson切片:

    可以看下这切数据

    鼠标移到图标上时高亮(图标是后台geoserver渲染的):

  • 相关阅读:
    桥接模式(Bridge)
    Python中文件操作
    Python中字符的编码与解码
    反转部分单向链表
    删除链表的中间节点和a/b处的节点
    链表中删除倒数第K个节点
    如何实现链表的逆序
    Python高阶函数及函数柯里化
    Python函数作用域
    Python函数参数与参数解构
  • 原文地址:https://www.cnblogs.com/shitao/p/2883626.html
Copyright © 2011-2022 走看看