地虎降天龙
地虎降天龙 图形社区官方人员
也许宇宙中最反直觉的真理是,你给别人的越多,你得到的也越多。

注册于 2年前

回答
87
文章
16
关注者
12

研究的也不是很深,尝试着看剖析问题看看,有翻了之前的文章看了下:
Fabric 材质 上
Fabric 材质 下
本来想尝试看看 repeat的回调的函数,结果发现没有好的解决方案。
只能尝试更改默认的着色器代码:

let appear = new Cesium.MaterialAppearance({
                flat :true ,
                material: new Cesium.Material({
                        translucent:false,
                        fabric : {
                            type :`Image`,
                            uniforms : {
                                image:`./static/images/symbol/0301.png`
                            }
                        },
                    }),
                vertexShaderSource://重点更改顶点着色器
                    `
                        // GLSL 300 语法,顶点着色器
                        in vec3 position3DHigh;
                        in vec3 position3DLow;
                        in vec3 normal;
                        in vec2 st;
                        in float batchId;
                        out vec3 v_positionEC;
                        out vec3 v_normalEC;
                        out vec2 v_st;
                        void main() {
                          vec4 p = czm_computePosition();
                          v_positionEC = (czm_modelViewRelativeToEye * p).xyz;      // position in eye coordinates
                          v_normalEC = czm_normal * normal;                         // normal in eye coordinates
                          v_st = st;
                          gl_Position = czm_modelViewProjectionRelativeToEye * p;
                        }
                    `
                });
//appear.fragmentShaderSource 片元着色器
//appear.vertexShaderSource 顶点着色器
        
let primitive = new Cesium.Primitive({
    geometryInstances: instances,
    appearance: appear
});

下面是说明:
image.png

点坐标效果和线效果 都是基于cesium的规范要求 定制化+着色器写的。详情见项目 ts源码

能否有职位和公司简介,联系方式
方便开发者了解详情,好让他们联系到您
谢谢😃

从您的代码看,应该是平移之前缺少了 获取模型 - 中心点的正东正北,和地表法线的方向的过度参数

Cesium.Transforms.eastNorthUpToFixedFrame(center);

详见cesium获取某个位置垂直于当前地表的垂直坐标系

cesium里面的坐标系、相互转换关系以及平移问题

看了下,目前百度地图的个性化地图编辑器已经升级了,不能用之前csdn的提供的方法了https://blog.csdn.net/qq_27816785/article/details/110920672
其瓦片数据加密了image.png
地图上的标识信息也隔离开 baidu的JSAPI自行处理了
image.png
故目前没有现成的方法,追踪此问题,有解决方案后再更新此贴吧

昨天和冰哥简单聊到了这个,问题解决的过程:
1、mac电脑上,chrome和Firefox浏览器都存在这个问题,而自带的safari浏览器不存在这个问题
2、其实显示的 是截取的中间一部分:
image.png
3、判断是,不同环境的不同浏览器 对应的 gl_PointSize 最大值不一样导致的
4、于是把片源着色器进行了如下缩放,显示正常了

        #ifdef GL_ES
        precision mediump float;
        #endif
        uniform vec2 u_resolution;
        void main(){
                vec2 p = (gl_FragCoord.xy * 2.0 - u_resolution) / min(u_resolution.x, u_resolution.y)*0.5;
                vec3 color1=vec3(0.);
                vec3 color2=vec3(0.);
                vec3 color3=vec3(0.);
                if(distance(vec2(0.,0.02),vec2(p.xy))<=.04)
                {
                    color1=vec3(.0,.0,1.);
                }
                if(distance(vec2(-.02,-.02),vec2(p.xy))<=.04)
                {
                    color2=vec3(1.,.0,0.);
                }
                if(distance(vec2(.02,-.02),vec2(p.xy))<=.04)
                {
                    color3=vec3(.0,1.,0.);
                }
                vec3 color=vec3(0.,0.,0.)+color1 + color2 + color3;
                gl_FragColor=vec4(color,1.);
        }

没明白 导入不能解压是什么意思
下面有使用方法

使用方法:
一、首先安装fastadmin 「1.2.1.20210730_full」完整版:https://jdvop.oss-cn-qingdao.aliyuncs.com/1.2.1.20210730_full.zip 其他最新的版本,因为版权原因,不给离线安装插件了。
然后安装fastadmin这个平台:
https://www.fastadmin.net/video.html
注意public运行目录 以及 thinkphp的伪静态配置

二、下载右侧编译好的 发行版 文件 .zip
1、修改上传文件的大小限制:
修改文件:
/application/extra/upload.php
20行:
'maxsize' => '20mb',

2、application/config.php 中
unknownsources 改为 true
debug 改为 true
trace 改为 true
然后请设置清空前后台缓存

3、进入你刚部署的fastadmin后台,选择插件管理、离线安装,选择这个zip文件

4、修改文件
addons/cesiummapv/vue3-typescript/.env.production
VUE_APP_API_URL = 'http://map.217dan.com/addons/cesiummapv'
其中的 map.217dan.com 部分 改成你的网址

5、npm install
npm run build

享用吧

你直接复制肯定不行的
请问您是具体哪步出的问题?

简略回答一下哈
1、借助绘图控件完成鼠标绘制路线,推荐类似这种CesiumDrawHelper
2、获得点的集合后,

// 设置起始时间
    const start = Cesium.JulianDate.fromDate(new Date(2022, 4, 26, 16))
    const stop = Cesium.JulianDate.addSeconds(start, flyPath.length, new Cesium.JulianDate())
// 计算飞行的path
    function computeFlightPath() {
      const property = new Cesium.SampledPositionProperty()
      for (let i = 0; i < flyPath.length; i++) {
        const time = Cesium.JulianDate.addSeconds(start, i, new Cesium.JulianDate())
        const position = Cesium.Cartesian3.fromDegrees(
          flyPath[i][0],
          flyPath[i][1],
          flyPath[i][2]
        )
        property.addSample(time, position)
      }
      return property
    }
// 之后增加飞机模型
    const airPlaneEntity = viewer.entities.add({
      id: id,
      availability: new Cesium.TimeIntervalCollection([
        new Cesium.TimeInterval({
          start: start,
          stop: stop
        })
      ]),
      position: position,
      orientation: new Cesium.VelocityOrientationProperty(position),
      model: {
        uri: uri,
        minimumPixelSize: 64,
        maximumScale: 10
      }
    })

以上为部分精简代码,可以参考完成。

自己对threeJS不是很专业,就不班门弄斧了,抛砖迎玉,给一个demo例子,仅供参考。 至于地图的加载和坐标的匹配,甚至跟随放大缩小,动态改变热力图的解析度,还请threeJS大佬来完善.
代码具体地址是:http://www.icegl.cn/addons/cms/archives/showcode?id=148
image.png

这个问题比较笼统,涉及的内容其实挺多。
我简单说一下:
1、首先是cesium支持的地图瓦片的类型其实很多,详见API:https://cesium.com/learn/cesiumjs/ref-doc/ImageryProvider.html
2、关于地图瓦片的发布:可以使用ArcGIS Manager来发布地图服务(自行制作地图瓦片),也可以使用在线免费的地图接口【Google地图、OpenStreetMap、Mapbox等】,或者把底图切片通过普通的web服务(nginx/apache/tomcat)发布出来
3、通过我开源项目后台的配置直接编辑,或者通过我前台对应的代码,new Cesium.SingleTileImageryProvider,然后add到场景中,注意顺序,最后加入的会在最上层显示在最上面,或者最后设置地图层级
4、关于只使用一部分的区域,你可以在地图发布的时候,限制经纬度范围。也可以在设置Cesium.ImageryProvider的rectangle参数来控制范围

谢谢您的反馈,我刚看了下,不知道怎么被加了两层,我去掉了卫星这一层的图层覆盖。
image.png
后台都可以直接配置,演示使用的是高德的公开地图,一般不会挂,你浏览器清空缓存试试

发布
问题