缓冲区分析
DMap3D.analysis.bufferAnalysis 用于在指定图形(点、线、面)周围创建缓冲区域。
引入
import DMap3D from 'dmap3d'
import * as Cesium from 'cesium'
基本用法
const viewer = new Cesium.Viewer('cesiumContainer')
// 创建缓冲区分析工具
const buffer = new DMap3D.analysis.bufferAnalysis(viewer)
// 监听分析完成事件
buffer.onAnalysisEnd((result) => {
console.log('缓冲距离:', result.bufferDistance, '米')
console.log('缓冲区面积:', result.bufferArea, '平方米')
})
// 激活分析
buffer.activate()
构造函数
new DMap3D.analysis.bufferAnalysis(viewer, options?)
参数:
viewer- Cesium.Viewer 实例options?- 可选配置项
Options:
interface BufferAnalysisOptions {
bufferDistance?: number // 缓冲距离(米),默认 50
geometryType?: 'polygon' | 'polyline' | 'point' // 几何类型,默认 'polygon'
originalColor?: string // 原始图形颜色,默认 '#FFFF00'
bufferColor?: string // 缓冲区颜色,默认 '#FF0000'
originalAlpha?: number // 原始图形透明度,默认 0.6
bufferAlpha?: number // 缓冲区透明度,默认 0.3
}
方法
activate()
激活绘制功能,根据设置的几何类型绘制图形。
buffer.activate()
deactivate()
停用绘制功能。
buffer.deactivate()
clear()
清除所有图形和缓冲区。
buffer.clear()
setBufferDistance(distance)
设置缓冲距离(1-100000 米)。
buffer.setBufferDistance(200)
setGeometryType(type)
设置几何类型。
buffer.setGeometryType('polyline') // 'polygon' | 'polyline' | 'point'
getBufferResult()
获取分析结果。
const result = buffer.getBufferResult()
if (result) {
console.log('缓冲区面积:', result.bufferArea)
}
onAnalysisEnd(callback)
注册分析完成回调。
buffer.onAnalysisEnd((result) => {
console.log('缓冲距离:', result.bufferDistance)
console.log('缓冲区面积:', result.bufferArea)
})
destroy()
销毁工具并释放资源。
buffer.destroy()
分析结果
interface BufferResult {
originalPositions: Cesium.Cartesian3[] // 原始图形坐标
bufferPositions: Cesium.Cartesian3[] // 缓冲区坐标
bufferDistance: number // 缓冲距离(米)
originalArea?: number // 原始图形面积(平方米)
bufferArea: number // 缓冲区面积(平方米)
}
完整示例
const viewer = new Cesium.Viewer('cesiumContainer')
// 创建缓冲区分析工具
const buffer = new DMap3D.analysis.bufferAnalysis(viewer, {
bufferDistance: 100,
geometryType: 'polygon',
originalColor: '#00FF00',
bufferColor: '#FF0000',
bufferAlpha: 0.3
})
// 监听分析完成
buffer.onAnalysisEnd((result) => {
console.log(`原始面积: ${result.originalArea?.toFixed(2)} 平方米`)
console.log(`缓冲面积: ${result.bufferArea.toFixed(2)} 平方米`)
})
// 激活分析
buffer.activate()
// 切换几何类型
buffer.clear()
buffer.setGeometryType('polyline')
buffer.setBufferDistance(50)
buffer.activate()
// 销毁
buffer.destroy()