openlayers [四] 地图图层 Layers详解

在这里插入图片描述

  • 在 openlayers 中,图层是使用 layer 对象表示的,主要有 WebGLPoints Layer热度图(HeatMap Layer)图片图层(Image Layer)切片图层(Tile Layer) 矢量图层(Vector Layer) 五种类型,它们都是继承 Layer 类的。
  • openlayers初始化 一幅地图(map),至少需要一个可视区域(view),一个或多个图层( layer), 和 一个地图加载的目标 HTML 标签(target),其中最重要的是图层(layer)

1 图层

1.1 线状图层

其实可以根据 图层 的中文含义已经理解了很大部分,为了更深的便于大家对 Layers 的理解,可以看下下面这张图。其实 openlayers 简单的新建map只是相当于一张可以移动,缩放的图片。但是实际项目需求往往需要在地图上添加各种图层来丰富我们的地图。

线状地物:道路、河流、线路、运行轨迹等应用
在这里插入图片描述

1.2 点状图层

点状图层:建筑、店铺、学校、红绿灯等场景
在这里插入图片描述

1.3 面状图层

面状图层:诸如行政区域等有一定范围的地物
在这里插入图片描述

2 图层存在一个或多个

// 初始化一个地图
initMap() {
    let target = "map"; //跟页面元素的 id 绑定来进行渲染
    let tileLayer = [
        new Tile({
            source: new OSM()
        })
    ];
    let view = new View({
        center: fromLonLat([104.912777, 34.730746]), //地图中心坐标
        zoom: 4.5 //缩放级别
    });
    this.map = new Map({
        target: target, //绑定dom元素进行渲染
        layers: tileLayer, //配置地图数据源
        view: view //配置地图显示的options配置(坐标系,中心点,缩放级别等)
    });
}


上面代码我们可以看到,new Map() 里面的layers 属性接收的tileLayer 值是一个数组,也就是说可以在地图上叠加一个或者多个图层

3 layers常见的属性

  • source,指定了图层的数据来源,图层作用是以一定的样式渲染数据,source则指定了数据;
  • className,图层各个元素的样式;
  • zIndex,图层的叠加次序,默认是0,最底层,如果使用setMap方法添加的图层,zIndex值是Infinity,在最上层;
  • extent,图层渲染的区域,即浏览器窗口中可见的地图区域。extent 是一个矩形范围,格式是[number, number, number, number] 分别代表 [left, bottom, right, top]为了提升渲染效率和加载速度,extent范围之外的瓦片是不会请求的,当然也不会渲染;
  • opacity,不透明度(0,1),默认为 1 ,即完全透明; visible,是否可见;
  • visible,布尔值 (默认为true) 能见度。
  • render,渲染功能。将框架状态作为输入,并期望返回HTML元素。将覆盖该图层的默认渲染。
  • minResolution,图层可见的最小分辨率;
  • maxResolution,图层可见的最大分辨率;
  • minZoom,最小视图缩放级别(不包括),在该级别之上,该层将可见。
  • maxZoom,该图层可见的最大视图缩放级别(包括该级别)。

4 layers各种图层和类型

从渲染发生的地方来看,openlayers的图层主要分为两类:Vector(矢量)Raster(栅格),矢量图层是指在渲染发生在浏览器的图层,source返回的数据类型是矢量,如geojson的坐标串;栅格图层则是由服务器渲染,返回到浏览器的是一张张的瓦片图片,栅格图层主要是展示。

矢量图层类型

  • Graticule,地图上覆盖的网格标尺图层
  • HeatMap,热力图
  • Vector,矢量图
  • VectorImage,单张的矢量图层
  • VectorTile,矢量瓦片图层
  • WebGLPoints,WebGL渲染的海量点图层

栅格图层类型有:

  • 栅格图层类型较为简单,只有Tile图层

总结

图层大致可以按照渲染的位置分为两类,

  • 一类是在服务器端渲染好,以图片形式返回浏览器的, imagelayer tilelayer 都是属于这种类型
  • 一类是在浏览器渲染的图层类型, vectorlayer heatmaplayer 就是这种类型。
  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱玩亚索的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值