GeoJSONLoader.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /**
  2. * GeoJSONLoader.js
  3. *
  4. * @author realor
  5. */
  6. import { GISLoader } from './GISLoader.js'
  7. import { Solid } from '../../core/Solid.js'
  8. import { BooleanOperator } from '../../builders/BooleanOperator.js'
  9. import * as THREE from '../../lib/three.module.js'
  10. class GeoJSONLoader extends GISLoader {
  11. constructor(manager) {
  12. super(manager, 'application/json')
  13. }
  14. parse(data) {
  15. const options = this.options
  16. const featureGroup = new THREE.Group()
  17. featureGroup.name = this.options.name || 'layer'
  18. let jsonObject = JSON.parse(data)
  19. let features = jsonObject.features
  20. for (let f = 0; f < features.length; f++) {
  21. let feature = features[f]
  22. let properties = feature.properties
  23. let geometry = feature.geometry
  24. if (geometry) {
  25. this.createObject(geometry.type, feature.id || 'feature', geometry.coordinates, properties, featureGroup)
  26. } else {
  27. this.createNonVisibleObject(feature.id || 'feature_nv', properties, featureGroup)
  28. }
  29. }
  30. return featureGroup
  31. }
  32. }
  33. export { GeoJSONLoader }