7c642f41cae9959a3e6f8f95323fa1d981a1a932.svn-base 1.0 KB

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