選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

factory.html 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <div id="viewer-container" class="viewer-container"></div>
  2. <script>
  3. DC.config.baseUrl = '../libs/dc-sdk/resources/'
  4. let viewer = new DC.Viewer('viewer-container')
  5. viewer.setOptions({
  6. shadows:true,
  7. globe:{
  8. baseColor:DC.Color.BLACK
  9. }
  10. })
  11. let layer = new DC.TilesetLayer('layer').addTo(viewer)
  12. let fs = `
  13. varying vec3 v_positionEC;
  14. void main(void){
  15. vec4 position = czm_inverseModelView * vec4(v_positionEC,1); // 位置
  16. float glowRange = 50.0; // 光环的移动范围(高度)
  17. gl_FragColor = vec4(0, 1.0, 1.0,0.8); // 颜色
  18. gl_FragColor *= vec4(vec3((position.z + 20.0) / 30.0), 0.2); // 渐变
  19. // 动态光环
  20. float time = fract(czm_frameNumber / 360.0);
  21. time = abs(time - 0.5) * 2.0;
  22. float diff = step(0.005, abs( clamp(position.z / glowRange, 0.0, 1.0) - time));
  23. gl_FragColor.rgb += gl_FragColor.rgb * (1.0 - diff);
  24. }
  25. `
  26. let tileset1 = new DC.Tileset(
  27. '//lab.earthsdk.com/model/27af3f70003311eaae02359b3e5d0653/tileset.json'
  28. )
  29. tileset1.setCustomShader(fs)
  30. let tileset2 = new DC.Tileset(
  31. '//lab.earthsdk.com/model/212bc470003311eaae02359b3e5d0653/tileset.json'
  32. )
  33. tileset2.setCustomShader(fs)
  34. let tileset3 = new DC.Tileset(
  35. '//lab.earthsdk.com/model/1b91bf10003311eaae02359b3e5d0653/tileset.json'
  36. )
  37. tileset3.setCustomShader(fs)
  38. layer
  39. .addOverlay(tileset1)
  40. .addOverlay(tileset2)
  41. .addOverlay(tileset3)
  42. let layer1 = new DC.VectorLayer('layer1')
  43. viewer.addLayer(layer1)
  44. let circle = new DC.Circle('116.38789554,39.89911368',500)
  45. circle.setStyle({
  46. material: new DC.ImageMaterialProperty({
  47. image: '../assets/icon/circleScan.png',
  48. color: new DC.Color(0, 1.0, 1.0,0.8),
  49. transparent: true,
  50. }),
  51. perPositionHeight: true,
  52. outline: true,
  53. outlineColor: new DC.Color(0, 1.0, 1.0,0.8)
  54. })
  55. circle.rotateAmount = 3
  56. layer1.addOverlay(circle)
  57. let layer2 = new DC.PrimitiveLayer('layer').addTo(viewer)
  58. let scanCircle= new DC.ScanCirclePrimitive('116.3994748,39.90784756',800)
  59. scanCircle.setStyle({
  60. color:new DC.Color(0, 1.0, 1.0,0.5)
  61. })
  62. layer2.addOverlay(scanCircle)
  63. viewer.flyToPosition('116.3904847,39.8773787,2807.38,0,-48.89')
  64. }
  65. </script>