注册 留言板
当前位置:首页 > 前端开发 > 其它 > 正文

OpenLayers-2.13.1 WMS图层缓存设置

来源:CSDN   发布时间: 2017-06-19   作者:u010299411   浏览次数:
摘要: OpenLayers调用WMS服务:            图像的加载是采用的螺旋式加载。首先从右上角开始按照顺时针方向给整个img矩阵建立一个堆...

OpenLayers调用WMS服务:           

图像的加载是采用的螺旋式加载。首先从右上角开始按照顺时针方向给整个img矩阵建立一个堆栈,其实质是按照堆栈先进后出思想设计的一个数组,然后按堆栈中的位置顺序从视窗中间开始逆时针方向依次加载栅格图像。

整个img矩阵构成一个grid格网,当移动地图使得grid的范围[即bound值]不能包含视窗的bound,或者地图的显示比例发生变化时会重新向服务器请求数据,否则只会移动各个img的位置,从而使得视窗在grid之内。

客户端用于栅格图显示的img数量是由计算得到的。用户指定的用于显示的div作为视窗,视窗大小除以每张img的长宽得到一个m*n的矩阵,表示要填满整个视窗在长宽方向所需的最少的img数量,然后将Img长宽方向都缓存两个img得到一个(m+2)*(n+2)的矩阵,即为客户端img数,默认缓存为两格,当然我们也可以将缓存数作为参数传入以改变缓存默认值buffer,那么改动之后的矩阵为(m+buffer)*(n+buffer)。

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <title>OpenLayers Buffer Example</title>
        <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
        <link rel="stylesheet" href="style.css" type="text/css">
        <script src="../lib/OpenLayers.js"></script>
        <script type="text/javascript">
            var lon = 0;
            var lat = 0;
            var zoom = 2;
            var map, layer;

            function init(){
                map = new OpenLayers.Map( 'map' );
                layer = new OpenLayers.Layer.WMS( "0 buffer: OpenLayers WMS",
                        "http://vmap0.tiles.osgeo.org/wms/vmap0",
                        {layers: 'basic'}, {'buffer':0} );
                map.addLayer(layer);
                layer = new OpenLayers.Layer.WMS( "1 buffer: OpenLayers WMS",
                        "http://vmap0.tiles.osgeo.org/wms/vmap0",
                        {layers: 'basic'}, {'buffer':1} );
                map.addLayer(layer);
                layer = new OpenLayers.Layer.WMS( "4 buffer: OpenLayers WMS",
                        "http://vmap0.tiles.osgeo.org/wms/vmap0",
                        {layers: 'basic'}, {'buffer':4} );
                map.addLayer(layer);
                map.addControl(new OpenLayers.Control.LayerSwitcher());
                map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
            }
        </script>
    </head>
    <body onload="init()">
        <h1 id="title">Buffer Example</h1>

        <div id="tags">
            buffer, performance, tile, light
        </div>

        <p id="shortdesc">
            This example shows the use of the buffer layer option for any layer that inherits from OpenLayers.Layer.Grid.
        </p>

        <div id="map" class="smallmap"></div>

        <div id="docs">
            Use the buffer property to control how many tiles are included
            outside the visible map area. Default is 0.
        </div>
    </body>
</html>




我来说两句
评论内容:
验  证  码:
 
(网友评论仅供其表达个人看法,并不表明本站同意其观点或证实其描述。)
评论列表
已有 0 条评论(查看更多评论)
精彩专题
友情链接:
设为首页 - 加入收藏 Copyright @2016 Infocool 版权所有 粤ICP备16000626号