/*
* @Author: lc
* @Date: 2017-04-20 17:03:05
* @Last Modified by: hydata
* @Last Modified time: 2018-05-10 17:10:09
* @Email: 304861063@qq.com
* @File Path: F:\work\hyMap\src\components\layer\buildingLayer.js
* @File Name: buildingLayer.js
* @Descript:圆形图层
*/
import baseLayer from './baseLayer';
import dataUtil from '../../util/dataUtil';
import styleModel from '../../model/circleStyle';
/**
* 圆
* @extends baseLayer
*/
class CircleLayer extends baseLayer {
constructor(options) {
options.layerType='circle';
super(options);
this.data = options.serie;
this.init(options.serie);
}
/**
* 构造json
* @param {*} serie
*/
buildJson(serie) {
//构建数据
let dataObject = dataUtil.buildData(serie.data);
serie.max = dataObject.max;
serie.min = dataObject.min;
this.addSource(dataObject.geojson);
//构建样式
const style = this.buildStyle(serie);
let normal = this.buildLayer(this.id, style.normal);
this.addLayer(normal);
let emphasis = this.buildLayer(this.id, style.emphasis, true);
this.addLayer(emphasis);
}
/**
* 构造style
* @param {*} serie
*/
buildStyle(serie) {
const style = serie.symbolStyle;
const min = serie.min;
const max = serie.max;
let normal = Object.assign({}, styleModel, style.normal);
let emphasis = Object.assign({}, normal, style.emphasis);
let visibility=normal.visibility;
delete normal['visibility'];
let emphasisiVisibility=emphasis.visibility;
delete emphasis['visibility'];
normal['circle-radius'] = this.buildSize(normal['circle-radius'], min, max);
emphasis['circle-radius'] = this.buildSize(emphasis['circle-radius'], min, max);
return {
normal: {
'type': 'circle',
'paint': normal,
'layout':{'visibility':visibility}
},
emphasis: {
'type': 'circle',
'paint': emphasis,
'layout':{'visibility':emphasisiVisibility}
}
};
// let normal = {};
// for (let key in style.normal) {
// let tmpKey = key.replace(/([a-z])([A-Z])/, "$1-$2").toLowerCase()
// normal["circle-" + tmpKey] = style.normal[key];
// console.log(key, style.normal[key]);
// }
}
}
export default CircleLayer