Map 分析与查询
类型 / 参数 / 返回值 / 用法 · 右侧为本页导航
自定义 本库 API
OL OpenLayers
融合 自定义与 OL 混用
Map 分析与查询
Map 方法 · 分析与查询
drawSearch(callback, param?)
- 类型:
Function - 参数:
{Function} callback— 查询完成回调{Object} [param]— 绘制类型、过滤图层等
- 返回值:无(无有效 callback 则直接 return)
map.drawSearch((results, num) => {
console.log('命中', num, results);
}, { type: 'Polygon' });
cancelDrawing() / clearDrawing()
- 类型:
Function - 参数:无
- 返回值:无
map.cancelDrawing();
map.clearDrawing();
getDrawResult(callback)
- 类型:
Function - 参数:
{Function} callback(results, resultsNum)
- 返回值:无
map.getDrawResult((results, num) => console.log(results, num));
circleSearch(data, callback, radius?, options?)
- 类型:
Function - 归属:融合(内部创建 OL VectorLayer 画圆)
- 参数:
{Object} data— 至少含objX、objY(圆心,地图坐标){Function} [callback]— 返回命中 code 列表{number} [radius]— 缓冲半径(公里级,turf buffer;默认约0.01){Object} [options]{string} [options.layerCode]— 仅在该云图层的turfGeometries上本地相交{string} [options.color]— 命中要素临时样式色
- 返回值:无
- 用法:
map.circleSearch(
{ objX: 13528430, objY: 3676466 },
(codes) => console.log(codes),
0.05,
{ layerCode: 'hydrant', color: '#f00' }
);
cancelCircleSearch()
- 类型:
Function - 说明:当前为空实现占位。
analysis(type, options)
- 类型:
Function - 参数:
{string} type— 分析模式,见下表{Object} options{string[]} options.analysisLayerCodes— 参与查询的图层(框选类必填,否则会查到不该查的层){Function} options.finishCallback— 结束回调,参数随 type 变化{Array} [options.data]— 结果回显数据(result/closeValveResult等){string} [options.lineColor]/{string} [options.flowColor]/{number} [options.lineWidth]—flow/result/flowDirection流动画样式{boolean} [options.static]—true时只画虚线不滚动(大数据压测){string} [options.renderMode]— 默认'canvas'(批量 Canvas);传'vector'才用旧 Vector 动画
- 返回值:无
- 用法:
// 默认 Canvas 批量流向(含小数据)
map.analysis('result', {
data: [{ objXStart, objYStart, objXEnd, objYEnd }],
lineColor: '#191970',
flowColor: '#FFFF73'
});
// 10万级同样默认 canvas;也可显式写出
map.analysis('result', {
data, // 行数组或 Float64Array([x0,y0,x1,y1,...])
renderMode: 'canvas',
lineColor: '#191970',
flowColor: '#FFFF73',
lineWidth: 1.5,
flowSpeed: 28
});
// 等价:map.showFlowNetwork(data, { lineColor, flowColor, lineWidth });
// 仅调试旧动画时:
// renderMode: 'vector'
map.clearAnalysis(); // 清空分析层 / Canvas 流向层并停止动画
analysis type
| type | 交互 | finishCallback 典型参数 |
|---|---|---|
slope | 绘面 | (objCodes) |
crossSection | 绘线 | (objCodes, distance[]) |
verticalSection | 两点选管线 | (results[]) |
verticalSectionResult | 无交互,画结果线 | — |
flowDirection | 绘面 | (objCodes) |
result | 用 options.data 画流动画 | — |
trace / traceSource / connectedness | 点选管线 | (objCodes) |
closeValve | 点选 | (objCodes) |
closeValveResult | 画关阀结果 | — |
point | 点选管点 | (objCodes) |
cancelAnalysis()
- 类型:
Function - 参数:无
- 返回值:无
- 说明:取消当前分析绘制交互;会停止分析图层上的流动画 rAF。
map.cancelAnalysis();
clearAnalysis()
- 类型:
Function - 参数:无
- 返回值:无
- 说明:停止分析层全部 feature 动画并
source.clear(),同时取消绘制。
map.clearAnalysis();
statistics(layerCodes, options?)
- 类型:
Function - 参数:
{string[]} layerCodes{Object} [options]— 传给layer.changeStyle;省略则layer.resume()
- 返回值:无
map.statistics(['pipe'], { /* 分级样式 */ });
map.statistics(['pipe']); // 恢复
statisticsByField(callback, options)
- 类型:
Function - 参数:
{Function} callback(result)—result为{ [layerCode]: AggregationResults }{Object} options— 可含layerCodes过滤,以及统计字段等(并入_statistics)
- 返回值:无
- 说明:用户绘面后对 GeoServer 图层做聚合统计。
map.statisticsByField((result) => {
console.log(result);
}, { layerCodes: ['pipe'] });
isPointInRange(data, coordinates)
- 类型:
Function - 参数:
{Object} data— 含objX、objY{number[][]} coordinates— 多边形环;若不闭合会自动闭合
- 返回值:
boolean
const inside = map.isPointInRange(
{ objX: 13528430, objY: 3676466 },
[[x1,y1],[x2,y2],[x3,y3],[x1,y1]]
);
getPointsInRange(data, coordinates)
- 类型:
Function - 参数:
{Array<Object>} data— 点列表(含objX/objY/objCode){number[][]} coordinates— 多边形环
- 返回值:
Array— 落在范围内的objCode列表
const codes = map.getPointsInRange(list, ring);