OpenLayers 4 ol.source 详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenLayers 4 ol.source 详解相关的知识,希望对你有一定的参考价值。

参考技术A

source 是 Layer 的重要组成部分,表示图层的来源,也就是服务地址。
除了在构造函数中指定外,还可以使用 layer.setSource(source) 稍后指定。

上面介绍的都是可以实例化的类,还有一部分基类,不能被实例化,只负责被继承,有:

矢量图层的数据源

包含四个事件, addfeature , changefeature , clear , removefeature 。

addfeature ,当一个要素添加到 source 中触发。
changefeature ,当要素变化时触发。
clear ,当 source 的 clear 方法调用时候触发。
removefeature ,当要素移除时候触发。

接受的参数:

features 方法
假如有一个包含空间数据的字符串,geojsonObject,是GeoJSON字符串格式,那么可以用来初始化一个图层。

url + format 方法
如果有一个文件作为数据源,那么可以配置 url 属性来加载数据:

这两种方法中都会指定数据来源格式, 矢量数据源支持的格式包含很多:gml、EsriJSON、geojson、gpx、igc、kml、osmxml、ows、polyline、topojson、wfs、wkt、wms capabilities(兼容 wms 的格式)、 wms getfeatureinfo、 wmts capabilities、xlink、xsd等格式。这些格式都有readFeatures 、readFeature 和readGeometry 方法用于读取数据。

提供被切分为切片的图片地图数据
可配置的选项

与 vector 一样的选项就不介绍了,介绍与 vector 特有的选项:

接受的事件

提供单一的图片地图。
可以配置的选项

触发的事件

source 是 layer 中必须(required)的选项,定义了地图数据的来源,与数据有关的函数,如addfeature、getfeature等函数都定义在 source 中,而且数据源支持多种格式。

Openlayers创建热力图

1.使用es6模块化方式引入HeatMap和VectorSource

import Heatmap from ‘ol/layer/Heatmap‘
import VectorSource from ‘ol/source/Vector‘

 2.创建热力图图层并添加到map上

let heatMapLayer = new Heatmap({
    name: ‘heatLayer‘,
    source: new VectorSource(),
    gradient: [‘#00f‘, ‘#0ff‘, ‘#0f0‘, ‘#ff0‘, ‘#f00‘], //颜色
    blur: 25, // 模糊半径
    radius: 20 //半径
})

//当添加feature到热力图层上时,设置热力值
heatMapLayer.getSource().on(‘addfeature‘, function (event) {
    let num = event.feature.get(‘num‘) // 热力值,从feature的属性中读取
    let magnitude = parseFloat(num)
    event.feature.set(‘weight‘, magnitude)// 设置热力值
})

map.addLayer(heatMapLayer)

3.创建feature并添加到热力图图层上

let feature = null
if (data.pointWkt) { 
    feature = wkt.readFeature(data.pointWkt) //使用wkt格式个点坐标创建feature
    // 添加属性到feature中,用于保存相关数据
    for (let prop in data) {
        feature.set(prop, data[prop])
    }
}

// 将feaure添加到t热力图图层上
heatMapLayer.getSource().addFeature(feature)

 

以上是关于OpenLayers 4 ol.source 详解的主要内容,如果未能解决你的问题,请参考以下文章

OpenLayers绘制图形

OpenLayers绘制图形

openlayers绘制多边形

Openlayers创建热力图

openlayers绘制图形添加至地图

无法以角度获取openlayers css