-
Notifications
You must be signed in to change notification settings - Fork 288
Expand file tree
/
Copy pathBufferSetting.js
More file actions
88 lines (78 loc) · 4.34 KB
/
BufferSetting.js
File metadata and controls
88 lines (78 loc) · 4.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/* Copyright© 2000 - 2025 SuperMap Software Co.Ltd. All rights reserved.
* This program are made available under the terms of the Apache License, Version 2.0
* which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html.*/
import {Util} from '../commontypes/Util';
import {BufferEndType, BufferRadiusUnit} from '../REST';
import {BufferDistance} from './BufferDistance';
/**
* @class BufferSetting
* @deprecatedclass SuperMap.BufferSetting
* @category iServer SpatialAnalyst BufferAnalyst
* @classdesc 缓冲区分析通用设置类。该类可用于设置缓冲区分析中的缓冲区端点类型、左/右侧缓冲距离、缓冲半径单位等参数。
* @param {Object} options - 可选参数。
* @param {BufferEndType} [options.endType=BufferEndType.FLAT] - 缓冲区端点枚举值。
* @param {BufferDistance} [options.leftDistance=100] - 左侧缓冲距离。
* @param {BufferDistance} [options.rightDistance=100] - 右侧缓冲距离。左/右缓冲距离的设置仅对线对象/数据集有效,如果是点/面对象/数据集,则只需要设置左缓冲距离,即使设置了右缓冲距离,在缓冲分析时也不起作用。
* @param {number} [options.semicircleLineSegment=4] - 圆头缓冲圆弧处线段的个数。
* @param {BufferRadiusUnit} [options.radiusUnit=BufferRadiusUnit.METER] - 缓冲半径单位。
* @usage
*/
export class BufferSetting {
constructor(options) {
/**
* @member {BufferEndType} [BufferSetting.prototype.endType = BufferEndType.FLAT]
* @description 缓冲区端点枚举值。分为平头和圆头两种。当设置缓冲区端点为平头时,左侧、右侧缓冲距离需为相同数值。
*/
this.endType = BufferEndType.FLAT;
/**
* @member {BufferDistance} [BufferSetting.prototype.leftDistance=100]
* @description 左侧缓冲距离。
* 当为 GeometryBufferAnalyst 时,单位为默认地图的投影系的单位(如 EPSG:3857 为米,EPSG:4326 为度),
* 当为 DatasetBufferAnalyst 时,单位通过{@link BufferSetting.radiusUnit}设置(默认全部为米)。
*/
this.leftDistance = new BufferDistance();
/**
* @member {BufferDistance} [BufferSetting.prototype.rightDistance=100]
* @description 右侧缓冲距离。
* 当为 GeometryBufferAnalyst 时,单位为默认地图的投影系的单位(如 EPSG:3857 为米,EPSG:4326 为度),
* 当为 DatasetBufferAnalyst 时,单位通过{@link BufferSetting#radiusUnit}设置(默认全部为米)。<br>
* 左/右缓冲距离的设置仅对线对象/数据集有效,如果是点/面对象/数据集,则只需要设置左缓冲距离,即使设置了右缓冲距离,在缓冲分析时也不起作用。
*/
this.rightDistance = new BufferDistance();
/**
* @member {number} [BufferSetting.prototype.semicircleLineSegment=4]
* @description 圆头缓冲圆弧处线段的个数。即用多少个线段来模拟一个半圆。
*/
this.semicircleLineSegment = 4;
/**
* @member {BufferRadiusUnit} [BufferSetting.prototype.radiusUnit = BufferRadiusUnit.METER]
* @description 缓冲半径单位,可以是{@link BufferRadiusUnit.METER}、{@link BufferRadiusUnit.MILLIMETER}、
* {@link BufferRadiusUnit.CENTIMETER}、{@link BufferRadiusUnit.DECIMETER}、{@link BufferRadiusUnit.KILOMETER}、
* {@link BufferRadiusUnit.FOOT}、{@link BufferRadiusUnit.INCH}、{@link BufferRadiusUnit.MILE}、{@link BufferRadiusUnit.YARD}。
* 仅对 BufferAnalyst 有效。
*/
this.radiusUnit = BufferRadiusUnit.METER;
if (options) {
Util.extend(this, options);
}
this.CLASS_NAME = "SuperMap.BufferSetting";
}
/**
* @function BufferSetting.prototype.destroy
* @description 释放资源,将引用资源的属性置空。
*/
destroy() {
let me = this;
me.endType = null;
if (me.leftDistance) {
me.leftDistance.destroy();
me.leftDistance = null;
}
if (me.rightDistance) {
me.rightDistance.destroy();
me.rightDistance = null;
}
me.semicircleLineSegment = null;
me.radiusUnit = null;
}
}