import { map, object3Dlayer } from './index_old';
|
|
// 3d图形
|
var _cylinder = undefined,
|
// 当前绘制的图形中的最小高度
|
_minH = -1,
|
// 当前绘制的图形中的最大高度
|
_maxH = -1;
|
|
//监测数据
|
var _factorDatas = {
|
lnglats: [],
|
heights: [],
|
type: ''
|
},
|
//当前选中的监测因子数据
|
_factor = {},
|
_zoomFirst = true;
|
|
function onMapZoom() {
|
// 首次地图缩放监听不执行(因为设定监听函数后会立即执行一次,可能官方函数有相关参数,后续待修改)
|
if (_zoomFirst) {
|
_zoomFirst = false;
|
return;
|
}
|
const fDatas = _factorDatas;
|
const factor = _factor;
|
// MapUtil._object3Dlayer.clear()
|
// MapUtil.drawMesh(f.lnglats, f.heights, f.type, false)
|
MapUtil.drawMesh2(fDatas, factor);
|
MapUtil.drawMarker();
|
}
|
|
export default {
|
/**
|
* 绘制3D走行路线图
|
* @param fDatas 完整监测数据
|
* @param factor 当前展示的监测因子的值value
|
* @param merge 是否和之前绘制的图形合并
|
* @param setCenter 镜头是否自动移动至图形中心
|
*/
|
drawRoadMap(fDatas, factor, merge, setCenter) {
|
const lnglats_GD = fDatas.lnglats_GD;
|
const heights = factor.heights;
|
|
// 1.关闭地图缩放监听
|
map.off('zoomend', this._onMapZoom);
|
|
// 2.计算绘图高度的边界值
|
if (merge != true) {
|
var minH = _minH < 0 ? heights[0] : _minH;
|
var maxH = _maxH < 0 ? heights[0] : _maxH;
|
for (let i = 0; i < heights.length; i++) {
|
const h = heights[i];
|
minH = Math.min(minH, h);
|
maxH = Math.max(maxH, h);
|
}
|
_minH = minH;
|
_maxH = maxH;
|
}
|
|
// 3.确定定位坐标点
|
var center;
|
if (setCenter && lnglats_GD.length > 0) {
|
var p = lnglats_GD[0];
|
for (let i = 0; i < lnglats_GD.length; i++) {
|
const e = lnglats_GD[i];
|
if (e[0] != 0) {
|
p = e;
|
break;
|
}
|
}
|
center = new AMap.LngLat(...p);
|
}
|
|
// 5.绘制3D图形
|
drawMesh2(fDatas, factor, center, merge);
|
|
// 缩放地图到合适的视野级别
|
// map.setFitView()
|
|
// 6.开启地图缩放监听
|
if (lnglats_GD.length > 0) {
|
map.on('zoomend', this._onMapZoom);
|
}
|
}
|
};
|