411c2a3970fde5af727d4ae5f34578e31c94c2c3.svn-base 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import * as THREE from 'three'
  2. import { animation, init } from './meshAnimation'
  3. import grentMesh from './grentMesh'
  4. import config from './config'
  5. import { Marker } from 'maptalks'
  6. import { mapGoto } from './statusManagement'
  7. function addText(args) {
  8. var point = new Marker(args.point,
  9. {
  10. properties: {
  11. altitude: args.height + 5
  12. },
  13. visible: true,
  14. editable: true,
  15. cursor: 'pointer',
  16. shadowBlur: 0,
  17. shadowColor: 'black',
  18. draggable: false,
  19. dragShadow: false, // display a shadow during dragging
  20. drawOnAxis: null, // force dragging stick on a axis, can be: x, y
  21. symbol: {
  22. 'textFaceName': 'sans-serif',
  23. 'textName': args.name,
  24. 'textFill': '#646464',
  25. 'textHorizontalAlignment': 'center',
  26. 'textSize': 12
  27. }
  28. }
  29. );
  30. point.on('click', () => {
  31. mapGoto({ center: args.point, zoom: 19 })
  32. })
  33. return point
  34. }
  35. async function listener(event) {
  36. let geoJsonArray = event.data.geoJsonArray
  37. geoJsonArray.forEach(j => {
  38. let {
  39. maxHeight,
  40. animateBuffArrays,
  41. fids,
  42. verticesBuffArrays: verticesArray,
  43. normalsBuffArrays: normalsArray,
  44. type,
  45. texts
  46. } = j
  47. let geometry = new THREE.BufferGeometry()
  48. geometry.addAttribute('position', new THREE.BufferAttribute(verticesArray, 3));
  49. geometry.addAttribute('normal', new THREE.BufferAttribute(normalsArray, 3));
  50. var mesh = grentMesh(geometry, type);
  51. threeLayer.getScene().add(mesh)
  52. mesh.maxHeight = maxHeight
  53. mesh.fids = fids
  54. init(verticesArray, maxHeight)
  55. animation(mesh, verticesArray, animateBuffArrays, config.stepTotal)
  56. mesh.texts = texts.map(addText)
  57. vector.addGeometry(mesh.texts, {
  58. enableAltitude: true, // enable altitude
  59. altitudeProperty: 'altitude'
  60. })
  61. console.log(mesh.texts[0], mesh.texts[0].getSize())
  62. })
  63. }
  64. export default listener