5333120810bdbffbc0375c677208245d20d39d5a.svn-base 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import 'babel-core/register'
  2. import 'babel-polyfill'
  3. import './style/public.css'
  4. import * as maptalks from 'maptalks'
  5. import { ThreeLayer } from 'maptalks.three'
  6. import meshStaus from './business/meshStaus'
  7. import initAmbient from './business/initAmbient'
  8. import { addGeo } from './core/dyWoker'
  9. import Event from './core/Event'
  10. import * as status from './business/statusManagement'
  11. let args = status.analysis()
  12. global.bus = new Event()
  13. global.map = new maptalks.Map('map', {
  14. center: [args.lon, args.lat],
  15. zoom: args.zoom,
  16. bearing: args.bearing,
  17. maxZoom: 20,
  18. minZoom: 15,
  19. maxPitch: 70,
  20. maxVisualPitch: 100,
  21. doubleClickZoom: false,
  22. forceRenderOnMoving: true,
  23. forceRenderOnZooming: true,
  24. forceRenderOnRotating: true,
  25. baseLayer: new maptalks.TileLayer('base', {
  26. 'urlTemplate': 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
  27. 'subdomains': ['a', 'b', 'c']
  28. })
  29. })
  30. // 高层数据获取
  31. const canvasTile = new maptalks.CanvasTileLayer('tile', {
  32. urlTemplate: 'https://{s}.data.osmbuildings.org/0.2/anonymous/tile/{z}/{x}/{y}.json',
  33. subdomains: ['a', 'b', 'c', 'd'],
  34. forceRenderOnMoving: true,
  35. forceRenderOnZooming: true,
  36. forceRenderOnRotating: true,
  37. repeatWorld: false,
  38. maxAvailableZoom: 15
  39. })
  40. map.addLayer(canvasTile)
  41. // 3DThree与map结合
  42. global.threeLayer = new ThreeLayer('t', {
  43. forceRenderOnMoving: true,
  44. forceRenderOnZooming: true,
  45. forceRenderOnRotating: true
  46. })
  47. threeLayer.prepareToDraw = initAmbient
  48. // 获取高层数据
  49. function getCurrTiles() {
  50. let tileGrids = canvasTile.getTiles().tileGrids
  51. for (var i = 0; i < tileGrids.length; i++) {
  52. if (tileGrids[i].zoom >= 15) break
  53. }
  54. return tileGrids[i].tiles
  55. }
  56. threeLayer.draw = () => {
  57. addGeo(getCurrTiles());
  58. delete threeLayer.draw;
  59. }
  60. threeLayer.addTo(map)
  61. let timeout = null
  62. map.on('moving moveend zoomend dragrotating dragrotateend', () => {
  63. clearTimeout(timeout)
  64. timeout = setTimeout(() => {
  65. meshStaus()
  66. addGeo(getCurrTiles())
  67. status.listStatus()
  68. }, 500)
  69. });
  70. // Maker承载容器
  71. global.vector = new maptalks.VectorLayer('vector', {
  72. enableAltitude: true, // enable altitude
  73. altitudeProperty: 'altitude', // altitude property in properties, default by 'altitude',
  74. forceRenderOnMoving: true,
  75. forceRenderOnZooming: true,
  76. forceRenderOnRotating: true
  77. })
  78. vector.addTo(map)