Skip to content

渲染器类型 Renderer

标准版提供 8 种渲染器,控制要素的符号化方式。所有类型继承自抽象基类 Renderer

Renderer(抽象基类)

所有渲染器的公共基类。

ts
abstract class Renderer {
  readonly type: string;

  abstract getSymbol(feature: Feature): Symbol;
}

属性

属性类型说明
typestring渲染器类型标识(只读)

方法

方法参数返回值说明
getSymbol(feature)feature: FeatureSymbol根据要素返回对应符号(抽象方法)

SimpleRenderer

简单渲染器,所有要素使用相同符号。

构造函数

ts
class SimpleRenderer extends Renderer {
  readonly type = 'simple';
  symbol: Symbol;

  constructor(options: { symbol: Symbol });
}

属性

属性类型说明
symbolSymbol统一使用的符号

方法

方法参数返回值说明
getSymbol(feature)feature: FeatureSymbol始终返回构造时的 symbol

示例

ts
import { SimpleRenderer, FillSymbol } from '@gmap/standard';

const renderer = new SimpleRenderer({
  symbol: new FillSymbol({ color: '#3388ff', opacity: 0.6 }),
});

// 所有要素都使用同一个符号
console.log(renderer.getSymbol(anyFeature)); // FillSymbol

UniqueValueRenderer

唯一值渲染器,根据字段值为不同类别分配不同符号。

构造函数

ts
class UniqueValueRenderer extends Renderer {
  readonly type = 'unique-value';
  field: string;
  defaultSymbol: Symbol;
  defaultLabel: string;

  constructor(options: {
    field: string;
    uniqueValues: UniqueValueItem[];
    defaultSymbol?: Symbol;
    defaultLabel?: string;
  });
}
ts
interface UniqueValueItem {
  value: string | number;
  symbol: Symbol;
  label?: string;
}

属性

属性类型说明
fieldstring用于分类的字段名
defaultSymbolSymbol未匹配时的默认符号
defaultLabelstring默认标签

方法

方法参数返回值说明
addValue(value, symbol, label?)value: string | number, symbol: Symbol, label?: stringthis添加唯一值映射
removeValue(value)value: string | numberthis移除唯一值映射
getSymbol(feature)feature: FeatureSymbol根据要素字段值返回符号

示例

ts
import { UniqueValueRenderer, FillSymbol } from '@gmap/standard';

const renderer = new UniqueValueRenderer({
  field: 'landuse',
  uniqueValues: [
    { value: 'residential', symbol: new FillSymbol({ color: '#ffffcc' }), label: '居住区' },
    { value: 'commercial', symbol: new FillSymbol({ color: '#fd8d3c' }), label: '商业区' },
    { value: 'industrial', symbol: new FillSymbol({ color: '#d94701' }), label: '工业区' },
    { value: 'park', symbol: new FillSymbol({ color: '#78c679' }), label: '公园' },
  ],
  defaultSymbol: new FillSymbol({ color: '#cccccc' }),
  defaultLabel: '其他',
});

renderer.addValue('agriculture', new FillSymbol({ color: '#fef0d9' }), '农业用地');
renderer.removeValue('industrial');

ClassBreaksRenderer

分级渲染器,将数值字段按分类方法分段并分配符号。

构造函数

ts
class ClassBreaksRenderer extends Renderer {
  readonly type = 'class-breaks';
  field: string;
  classification: string;
  classCount: number;
  defaultSymbol: Symbol;

  constructor(options: {
    field: string;
    classification?: 'equalInterval' | 'quantile' | 'naturalBreaks' | 'stdDeviation' | 'manual';
    classCount?: number;
    classBreaks?: ClassBreak[];
    defaultSymbol?: Symbol;
  });
}
ts
interface ClassBreak {
  min: number | null;
  max: number | null;
  symbol: Symbol;
  label?: string;
}

属性

属性类型默认值说明
fieldstring数值字段名
classificationstring'quantile'分类方法
classCountnumber5分级数
defaultSymbolSymbol未匹配时的默认符号

分类方法

方法说明
'equalInterval'等间距分级
'quantile'等量分级(每级要素数相同)
'naturalBreaks'自然断点法(Jenks)
'stdDeviation'标准差分级
'manual'手动设置断点

方法

方法参数返回值说明
addBreak(min, max, symbol, label?)min: number | null, max: number | null, symbol: Symbol, label?: stringthis添加分级断点
removeBreak(index)index: numberthis移除指定断点
getSymbol(feature)feature: FeatureSymbol根据要素字段值返回对应级别符号

示例

ts
import { ClassBreaksRenderer, FillSymbol } from '@gmap/standard';

const renderer = new ClassBreaksRenderer({
  field: 'population',
  classification: 'quantile',
  classCount: 5,
});

renderer
  .addBreak(null, 10000, new FillSymbol({ color: '#f7fbff' }), '< 1万')
  .addBreak(10000, 50000, new FillSymbol({ color: '#deebf7' }), '1-5万')
  .addBreak(50000, 200000, new FillSymbol({ color: '#9ecae1' }), '5-20万')
  .addBreak(200000, 1000000, new FillSymbol({ color: '#4292c6' }), '20-100万')
  .addBreak(1000000, null, new FillSymbol({ color: '#08306b' }), '> 100万');

GraduatedSymbolRenderer

比例符号渲染器,根据数值按比例缩放符号大小。

构造函数

ts
class GraduatedSymbolRenderer extends Renderer {
  readonly type = 'graduated';

  constructor(options: {
    field: string;
    valueRange?: [number, number];
    minSize?: number;
    maxSize?: number;
    baseSymbol: Symbol;
  });
}

属性

属性类型默认值说明
fieldstring数值字段名
valueRange[number, number][0, 100]值域范围
minSizenumber4最小符号大小
maxSizenumber32最大符号大小
baseSymbolSymbol基础符号(size 属性会被动态调整)

方法

方法参数返回值说明
getSymbol(feature)feature: FeatureSymbol返回按比例缩放后的符号克隆

示例

ts
import { GraduatedSymbolRenderer, MarkerSymbol } from '@gmap/standard';

const renderer = new GraduatedSymbolRenderer({
  field: 'value',
  valueRange: [0, 10000],
  minSize: 6,
  maxSize: 40,
  baseSymbol: new MarkerSymbol({ color: '#e74c3c', shape: 'circle' }),
});

// 要素值为 5000 时,符号大小将为 minSize + (maxSize - minSize) * 0.5 = 23

DotDensityRenderer

点密度渲染器,用随机分布的点表示密度。

构造函数

ts
class DotDensityRenderer extends Renderer {
  readonly type = 'dot-density';
  seed: number;

  constructor(options: { seed?: number });
}

属性

属性类型默认值说明
seednumber42随机种子(保证可复现)

方法

方法参数返回值说明
getSymbol(feature)feature: FeatureSymbol返回点密度符号

示例

ts
import { DotDensityRenderer } from '@gmap/standard';

const renderer = new DotDensityRenderer({ seed: 123 });

HeatmapRenderer

热力图渲染器。

构造函数

ts
class HeatmapRenderer extends Renderer {
  readonly type = 'heatmap';

  constructor(options?: { type?: string });
}

属性

属性类型默认值说明
typestring'heatmap'渲染器类型

方法

方法参数返回值说明
getSymbol(feature)feature: FeatureSymbol返回热力图符号

示例

ts
import { HeatmapRenderer } from '@gmap/standard';

const renderer = new HeatmapRenderer();

MeshRenderer

网格渲染器,用于 3D 要素的网格渲染。

构造函数

ts
class MeshRenderer extends Renderer {
  readonly type = 'mesh';

  constructor(options: {
    field?: string;
    material?: string;
    vertexColors?: boolean;
    colorRamp?: Array<{ value: number; color: string }>;
    wireframe?: boolean;
    shadows?: 'none' | 'cast' | 'receive' | 'both';
    elevationScale?: number;
    opacity?: number;
  });
}

属性

属性类型默认值说明
fieldstring | undefined用于着色的字段
vertexColorsbooleanfalse是否使用顶点颜色
colorRampArray<{value, color}> | undefined颜色渐变配置
wireframebooleanfalse是否显示线框
shadowsstring'none'阴影模式
elevationScalenumber1高度缩放
opacitynumber1不透明度

方法

方法参数返回值说明
getSymbol(feature)feature: FeatureSymbol返回网格符号

示例

ts
import { MeshRenderer } from '@gmap/standard';

const renderer = new MeshRenderer({
  field: 'elevation',
  vertexColors: true,
  colorRamp: [
    { value: 0, color: '#00ff00' },
    { value: 500, color: '#ffff00' },
    { value: 1000, color: '#ff0000' },
  ],
  shadows: 'both',
  elevationScale: 2,
  opacity: 0.85,
});

CustomRenderer

自定义渲染器,允许通过函数自定义符号化逻辑。

构造函数

ts
class CustomRenderer extends Renderer {
  readonly type = 'custom';

  constructor(options?: { type?: string });
}

方法

方法参数返回值说明
getSymbol(feature)feature: FeatureSymbol根据自定义逻辑返回符号

示例

ts
import { CustomRenderer } from '@gmap/standard';

const renderer = new CustomRenderer({ type: 'my-custom' });

四川省交通运输综合地理服务平台 地图开发框架