8ebb1bbb3acabd38dcb02076acec5820ba8ad09d.svn-base 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import FeaturesToAttribute from '../worker/featuresToAttribute.worker'
  2. import addMesh from '../business/addMesh'
  3. import {threeLayer} from '../business/initScene3D'
  4. let workers = [
  5. new FeaturesToAttribute()
  6. ]
  7. workers.forEach(worker => {
  8. worker.addEventListener('message', event => {
  9. if (event.data.incident === 'addGeo') {
  10. addMesh(event)
  11. }
  12. })
  13. })
  14. let index = 0
  15. function getWorker() {
  16. if (index >= workers.length) index = 0
  17. return workers[index++]
  18. }
  19. function addGeo(tiles) {
  20. console.log('add')
  21. let map = threeLayer.getMap()
  22. let setting = {
  23. center: map.getCenter(),
  24. maxNativeZoom: map.getMaxNativeZoom()
  25. }
  26. bus.emit('addGeoing')
  27. let length = workers.length
  28. let len = Math.floor(tiles.length / length)
  29. for (let i = 0; i < length; i++) {
  30. getWorker().postMessage(JSON.stringify({
  31. thing: 'getGeo',
  32. map: setting,
  33. tiles: tiles.slice(i * len, i === length - 1 ? tiles.length : len * (i + 1))
  34. }))
  35. }
  36. }
  37. function clearFids (fids) {
  38. getWorker().postMessage(JSON.stringify({
  39. thing: 'clearFids',
  40. fids: fids
  41. }))
  42. }
  43. export {
  44. addGeo,
  45. clearFids
  46. }