12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import * as THREE from 'three'
- import { animation, init } from './meshAnimation'
- import grentMesh from './grentMesh'
- import config from './config'
- import { Marker } from 'maptalks'
- import { mapGoto } from './statusManagement'
- function addText(args) {
- var point = new Marker(args.point,
- {
- properties: {
- altitude: args.height + 5
- },
- visible: true,
- editable: true,
- cursor: 'pointer',
- shadowBlur: 0,
- shadowColor: 'black',
- draggable: false,
- dragShadow: false, // display a shadow during dragging
- drawOnAxis: null, // force dragging stick on a axis, can be: x, y
- symbol: {
- 'textFaceName': 'sans-serif',
- 'textName': args.name,
- 'textFill': '#646464',
- 'textHorizontalAlignment': 'center',
- 'textSize': 12
- }
- }
- );
- point.on('click', () => {
- mapGoto({ center: args.point, zoom: 19 })
- })
- return point
- }
- async function listener(event) {
- let geoJsonArray = event.data.geoJsonArray
- geoJsonArray.forEach(j => {
- let {
- maxHeight,
- animateBuffArrays,
- fids,
- verticesBuffArrays: verticesArray,
- normalsBuffArrays: normalsArray,
- type,
- texts
- } = j
- let geometry = new THREE.BufferGeometry()
- geometry.addAttribute('position', new THREE.BufferAttribute(verticesArray, 3));
- geometry.addAttribute('normal', new THREE.BufferAttribute(normalsArray, 3));
- var mesh = grentMesh(geometry, type);
- threeLayer.getScene().add(mesh)
- mesh.maxHeight = maxHeight
- mesh.fids = fids
- init(verticesArray, maxHeight)
- animation(mesh, verticesArray, animateBuffArrays, config.stepTotal)
- mesh.texts = texts.map(addText)
- vector.addGeometry(mesh.texts, {
- enableAltitude: true, // enable altitude
- altitudeProperty: 'altitude'
- })
- console.log(mesh.texts[0], mesh.texts[0].getSize())
- })
- }
- export default listener
|