diff --git a/src/views/AppThreeMap.vue b/src/views/AppThreeMap.vue index e14795c..442927c 100644 --- a/src/views/AppThreeMap.vue +++ b/src/views/AppThreeMap.vue @@ -205,7 +205,8 @@ export default { that.scene.add(that.mapGroup); } - transLayer({bakeStockAmt, longitude, latitude} = {}) { + transLayer(item = {}) { + let {bakeStockAmt, longitude, latitude} = item longitude = Number(longitude || 0).toFixed(6); latitude = Number(latitude || 0).toFixed(6); const markerGeometry = new THREE.CircleBufferGeometry(0.1, 32); @@ -219,17 +220,21 @@ export default { opacity: 1 }); const marker = new THREE.Mesh(markerGeometry, markerMaterial); - // const [x, y, z] = this.lnglatToVector3([longitude, latitude]) - const lnglat = this.lnglatToVector3([longitude, latitude]); const v3 = new THREE.Vector3(lnglat[0], lnglat[1], lnglat[2]).multiplyScalar(1.2); // marker.scale.set(scale, scale, 1) + marker.data = item marker.position.set(v3.x * scale, v3.y * scale, 0.201 * scale) return marker } addMarkers() { - root.layers.map(layer => this.scene.add(this.transLayer(layer))) + this.markers = []; + root.layers.map(layer => { + const marker = this.transLayer(layer) + this.markers.push(marker) + this.scene.add(marker) + }) } /** @@ -378,7 +383,21 @@ export default { new TWEEN.Tween(o).to(n, t).start(); } - // window.addEventListener('mousemove', onMouseMove, false); + const onClick = evt => { + // 计算鼠标位置 + const mouseX = (evt.clientX / window.innerWidth) * 2 - 1; + const mouseY = -(evt.clientY / window.innerHeight) * 2 + 1; + + // 创建一个射线投射器 + const raycaster = new THREE.Raycaster(); + raycaster.setFromCamera(new THREE.Vector2(mouseX, mouseY), this.camera); + const marker = this.markers.find(e => raycaster.intersectObject(e).length > 0) + const {$glob} = window + this.$storeBoard.search.storeCode = marker.data?.storeCode + $glob.group = '9f299712-5549-413b-a93b-7c3e3b5bfadb' + } + window.addEventListener('mousemove', onMouseMove, false); + window.addEventListener('click', onClick, false); } makeGround() { @@ -497,8 +516,3 @@ export default { - -