/*``
* @Author: tjc
* @Date: 2017-04-20 17:03:05
* @Last Modified by: hydata
* @Last Modified time: 2018-05-10 17:11:16
* @Email: 304861063@qq.com
* @File Path: F:\work\hyMap\src\components\layer\buildingLayer.js
* @File Name: clustersLayer.js
* @Descript:热力图图层
*/
// import mapboxgl from 'mapbox-gl';
import baseLayer from './baseLayer';
import dataUtil from '../../util/dataUtil';
import styleModel from '../../model/heatmapStyle';
/**
* 热力图
* @extends baseLayer
*/
class HeatmapLayer extends baseLayer {
/**
*
* @param {*} options
*/
constructor(options) {
options.layerType = 'heatmap';
super(options);
this.data = options.serie;
this.init(this.data);
}
/**
* 获取json
*/
getJson() {
return this.geojson;
}
/**
* 构造json
* @param {*} serie
*/
buildJson(serie) {
//构建数据
let dataObject = dataUtil.buildData(serie.data);
serie.max = dataObject.max;
serie.min = dataObject.min;
//构建样式
if(serie.cluster){
dataObject.geojson.cluster=serie.cluster;
dataObject.geojson.clusterRadius=serie.clusterRadius||50;
}
this.addSource(dataObject.geojson);
const style = this.buildStyle(serie);
let normal = this.buildLayer(this.id, style);
this.addLayer(normal);
return normal;
}
/**
* 构造style
* @param {*} serie
*/
buildStyle(serie) {
let normal = Object.assign({}, styleModel, serie.symbolStyle.normal);
let visibility = normal.visibility;
delete normal['visibility'];
return {
'type': 'heatmap',
'paint': normal,
'layout': {
'visibility': visibility
}
};
}
}
export default HeatmapLayer