|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <div id="viewer-container" ></div>
- <script>
- let viewer = undefined
-
- function loadBuild(){
- let layer = new DC.TilesetLayer('layer_build').addTo(viewer)
- let build = new DC.Tileset(
- '//resource.dvgis.cn/data/3dtiles/ljz/tileset.json',
- {skipLevels:true}
- )
- let fs = `
- varying vec3 v_positionEC;
- void main(void){
- vec4 position = czm_inverseModelView * vec4(v_positionEC,1); // 位置
- float glowRange = 100.0; // 光环的移动范围(高度)
- gl_FragColor = vec4(0.2, 0.5, 1.0, 1.0); // 颜色
- gl_FragColor *= vec4(vec3(position.z / 100.0), 1.0); // 渐变
- // 动态光环
- float time = fract(czm_frameNumber / 360.0);
- time = abs(time - 0.5) * 2.0;
- float diff = step(0.005, abs( clamp(position.z / glowRange, 0.0, 1.0) - time));
- gl_FragColor.rgb += gl_FragColor.rgb * (1.0 - diff);
- }
- `
- build.setCustomShader(fs)
- layer.addOverlay(build)
- }
-
- function loadRoad(){
- let layer_road = new DC.GeoJsonLayer('layer_road','examples/data/road_ljz.geojson')
- layer_road.eachOverlay(item =>{
- if(item.polyline){
- DC.Util.merge(item.polyline,{
- material: new DC.PolylineTrailMaterialProperty({
- speed: 5 ,
- color:DC.Color.ORANGE.withAlpha(0.5)
- }),
- width:2
- })
- }
- })
- viewer.addLayer(layer_road)
- }
-
- function loadParabola(){
- let layer = new DC.PrimitiveLayer('line_layer')
- viewer.addLayer(layer)
- let center = DC.Position.fromObject({lng: 121.49536592256028, lat: 31.241616722278213})
- let positions = [
- {lng: 121.46575474842851, lat: 31.25491511358896 },
- {lng: 121.4813104277516, lat: 31.227003838010212 },
- {lng: 121.50657363869442, lat: 31.227646614453125 },
- {lng: 121.52418391477424, lat: 31.25831768661698 },
- {lng: 121.51534816216447, lat: 31.238932318412797},
- {lng: 121.47411195956543, lat: 31.23653254767207},
- {lng: 121.4948618756933, lat: 31.22694576870397},
- {lng: 121.49695060106232, lat: 31.275195479192174},
- {lng: 121.46575474842851, lat: 31.25491511358896 },
- {lng: 121.4813104277516, lat: 31.227003838010212 },
- {lng: 121.50657363869442, lat: 31.227646614453125 },
- {lng: 121.52418391477424, lat: 31.25831768661698 },
- {lng: 121.51534816216447, lat: 31.238932318412797},
- {lng: 121.47411195956543, lat: 31.23653254767207},
- {lng: 121.4948618756933, lat: 31.22694576870397},
- {lng: 121.49695060106232, lat: 31.275195479192174}].map(item=> DC.Position.fromObject(item))
- positions.forEach(item => {
- let line = new DC.FlowLinePrimitive(DC.Math.parabola(center,item,500),3)
- line.setStyle({
- speed: 5 * Math.random(),
- color: new DC.Color(0.5, 0.8, 1.0, 1.0)
- })
- layer.addOverlay(line)
- })
- }
-
- function loadCircle(){
- let layer_circle = new DC.PrimitiveLayer('layer-circle').addTo(viewer)
- let circle= new DC.ScanCirclePrimitive("121.49536592256028,31.241616722278213",5000)
- circle.setStyle({
- speed: 6 ,
- color: new DC.Color(0.5, 0.8, 1.0, 1.0)
- })
- layer_circle.addOverlay(circle)
-
- }
-
- function loadVLine (){
- let layer = new DC.PrimitiveLayer('vLine_layer')
- viewer.addLayer(layer)
- let positions =[
- {lng: 121.47345213010999, lat: 31.255897743532817},
- {lng: 121.48003080908789, lat: 31.238221981850913}
- ,{lng: 121.48587705354248, lat: 31.23057714185711}
- ,{lng: 121.4879953677747, lat: 31.262151572375352}
- ,{lng: 121.50906299339611, lat: 31.250152480540006}
- ,{lng: 121.50417770232045, lat: 31.24023424714257}
- ,{lng: 121.5182173410024, lat: 31.254527578802833}
- ,{lng: 121.50967147857085, lat: 31.35601077672074}
- ,{lng: 121.51899277846763, lat: 31.245648856298804} ]
- positions.forEach(item=>{
- let position = DC.Position.fromObject(item)
- let end = position.copy()
- end.alt = 1000 * Math.random()
- let line = new DC.FlowLinePrimitive([position,end],3)
- line.setStyle({
- speed: 5,
- color: new DC.Color(0.5, 0.8, 1.0, 1.0)
- })
- layer.addOverlay(line)
- })
- }
-
- DC.config.baseUrl = '../libs/dc-sdk/resources/'
- let viewer = new DC.Viewer('viewer-container')
- let baseLayer = DC.ImageryLayerFactory.createAMapImageryLayer({
- style: 'img',
- crs:'WGS84'
- })
- baseLayer.defaultBrightness = 0.05
- viewer.setOptions({
- enableFxaa:true
- })
- viewer.addBaseLayer( baseLayer)
- viewer.use(new DC.Effect())
- viewer.effect.bloom.enable = true
- let globeRotate = new DC.GlobeRotate(viewer,{
- duration:5,
- callback:()=>{
- viewer.flyToPosition("121.50995868,31.20091392,4405.64,344.2,-46.66",()=>{
- loadBuild()
- loadRoad()
- loadParabola()
- loadCircle()
- loadVLine()
- })
- }
- })
- globeRotate.start()
- }
-
-
- </script>
|