ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

cesium 图层构建的那些事 (十七)

2022-01-28 13:59:20  阅读:180  来源: 互联网

标签:十七 const symbol value item cesium attributes 图层 any


根据基础聚合类,我们构建geojosn序列化的聚合使用类

首先是参数定义

interface ClassBreak {
minValue: number,
maxValue: number,
symbol: any
}
interface UniqueValue {
value: number,
symbol: any
}

export interface PRenderer {
type: “simple”|“uniqueValue”|“classBreaks”,
field?: string,//simple不需要该参数
symbol: any,
classBreakInfos?: Array,
uniqueValueInfos?:Array
}
renderer设置


import {PRenderer} from "./PRenderer";
import {ColorUtil} from "../utils/ColorUtil";

export class Renderer {
type = "Renderer";
private renderer: PRenderer;

constructor(renderer: PRenderer) {
this.renderer = renderer;
}
 
/**
* 获得symbol
* @param attributes 属性
* @param {boolean} isEntity 是否是Entity解析
* @returns {any} symbol
*/
public getSymbol(attributes: any, isEntity = false): any {
const {type, field, symbol, uniqueValueInfos, classBreakInfos} = this.renderer;
if (type === "simple") {
if (!symbol) {
throw new Error("缺少属性symbol");
}
return symbol;
}
let value = attributes[field || ""];
if (isEntity) {
value = value?._value
}
if (type === "uniqueValue") {
if (!uniqueValueInfos) {
throw new Error("缺少属性uniqueValueInfos");
}
for (const item of uniqueValueInfos) {
if (item.value == value) {
return item.symbol;
}
}
}
if (type === "classBreaks") {
if (!classBreakInfos) {
throw new Error("缺少属性classBreakInfos");
}
for (const item of classBreakInfos) {
if (value >= item.minValue && value < item.maxValue) {
return item.symbol;
}
}
}
return symbol;
}
 
 
public setEntitySymbol(entity: any, attributes: any) {
const symbol = this.getSymbol(attributes, true);
Renderer.setEntityProperties(entity, attributes, symbol);
}
 
 
public static setEntityProperties(obj: any, attributes: any, properties: any) {
for (const key in properties) {
const value = properties[key];
if (Object.prototype.toString.call(value) == "[object Object]") {
if (value instanceof Cesium.Color) {
obj[key] = value
} else if (value instanceof Cesium.LabelGraphics) {
const v = value.clone();
v.text = v.text._value.replace(/\${(\w+)+}/g, function (match, key) {
return attributes[key]._value;
});
 更多参考 https://xiaozhuanlan.com/topic/4596712380

标签:十七,const,symbol,value,item,cesium,attributes,图层,any
来源: https://blog.csdn.net/haibalai2009/article/details/122730348

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有