浮标小手解决方案
-
用摄像头位置判断是否在范围内
-
用触发范围远近标识先后顺序
-
需要将判断触发范围的逻辑提取出来(目前是在每个点中进行判断以及绘制,不好做全体判断)
-
在spot遍历后label初始化类后进行筛选优先绘制手指标志
let label = new Label(spot.uuid, spot.name, "XXX米", menuItem.buoyIcon || menuItem.imageSelected, spot.x, spot.y, null);
-
-
-
实现代码:
_needDrawFinger
代表需要画手指(单个点)_drawFinger
控制是否绘制手指在
componets/nav/nav.js
页面调用renderer.setLabels(labels)
时内部调用this._calcPoints(this.labels);
并传入labels进行遍历调用labels对象的_calc()
方法同时调用_calcDistance()
方法。在_calcDistance()
方法中对最小值进行运算,在中间插入_needDrawFinger
的判断表示当前点是否需要画手指的点,在遍历结束后.then调用等待遍历结束拿到_needDrawFinger
。再次遍历labels,将其中_needDrawFinger=true
的点过滤出来,再判断是否为触发过的点位,再判断是否所有距离里最小的点,获取其id并把单个点的_drawFinger
设置为true。最后遍历labels查看是否需要绘制手指