其实可以根据 图层 的中文含义已经理解了很大部分,为了更深的便于大家对 Layers 的理解,可以看下下面这张图。其实 openlayers 简单的新建map只是相当于一张可以移动,缩放的图片。但是实际项目需求往往需要在地图上添加各种图层来丰富我们的地图。
线状地物:道路、河流、线路、运行轨迹等应用
点状图层:建筑、店铺、学校、红绿灯等场景
面状图层:诸如行政区域等有一定范围的地物
// 初始化一个地图
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 值是一个数组,也就是说可以在地图上叠加一个或者多个图层
从渲染发生的地方来看,openlayers的图层主要分为两类:Vector(矢量)和 Raster(栅格),矢量图层是指在渲染发生在浏览器的图层,source返回的数据类型是矢量,如geojson的坐标串;栅格图层则是由服务器渲染,返回到浏览器的是一张张的瓦片图片,栅格图层主要是展示。
矢量图层类型
栅格图层类型有:
图层大致可以按照渲染的位置分为两类,