6dda7dfaaa677423533bf6b93f33db8f721f0856.svn-base 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 + 36
  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. vector.addGeometry([point], {
  31. enableAltitude: true, // enable altitude
  32. altitudeProperty: 'altitude'
  33. })
  34. point.on('click', () => {
  35. mapGoto({ center: args.point })
  36. })
  37. return point
  38. }
  39. async function listener(event) {
  40. let geoJsonArray = event.data.geoJsonArray
  41. geoJsonArray.forEach(j => {
  42. let {
  43. maxHeight,
  44. animateBuffArrays,
  45. fids,
  46. verticesBuffArrays: verticesArray,
  47. normalsBuffArrays: normalsArray,
  48. type,
  49. texts
  50. } = j
  51. let geometry = new THREE.BufferGeometry()
  52. geometry.addAttribute('position', new THREE.BufferAttribute(verticesArray, 3));
  53. geometry.addAttribute('normal', new THREE.BufferAttribute(normalsArray, 3));
  54. var mesh = grentMesh(geometry, type);
  55. threeLayer.getScene().add(mesh)
  56. mesh.maxHeight = maxHeight
  57. mesh.fids = fids
  58. init(verticesArray, maxHeight)
  59. animation(mesh, verticesArray, animateBuffArrays, config.stepTotal)
  60. texts.map(addText)
  61. })
  62. }
  63. export default listener