Cesium 基于MapBox底图加载3DTiles 模型
3DTiles 模型采用 CATIA V5 R22 --->3dxml --->GLB--->B3DM
var extent = Cesium.Rectangle.fromDegrees(75, 60.808406, 135.313421, 10);
Cesium.Camera.DEFAULT_VIEW_RECTANGLE = extent;
Cesium.Camera.DEFAULT_VIEW_FACTOR = 0;
Cesium.Ion.defaultAccessToken = "你的Token";
Cesium.CreditDisplay.cesiumCredit = "测试";
var viewer = new Cesium.Viewer('cesiumContainer', {
animation: false,//是否创建动画小器件,左下角仪表
baseLayerPicker: false,//是否显示图层选择器
fullscreenButton: true,//是否显示全屏按钮
geocoder: true,//是否显示geocoder小器件,右上角查询按钮
homeButton: true,//是否显示Home按钮
infoBox: false,//是否显示信息框
sceneModePicker: true,//是否显示3D/2D选择器
selectionIndicator: false,//是否显示选取指示器组件
timeline: false,//是否显示时间轴
navigationHelpButton: false,//是否显示右上角的帮助按钮
scene3DOnly: true,//如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
clock: new Cesium.Clock(),//用于控制当前时间的时钟对象
selectedImageryProviderViewModel: undefined,//当前图像图层的显示模型,仅baseLayerPicker设为true有意义
//imageryProviderViewModels: Cesium.createDefaultImageryProviderViewModels(),//可供BaseLayerPicker选择的图像图层ProviderViewModel数组
selectedTerrainProviderViewModel: undefined,//当前地形图层的显示模型,仅baseLayerPicker设为true有意义
terrainProviderViewModels: Cesium.createDefaultTerrainProviderViewModels(),//可供BaseLayerPicker选择的地形图层ProviderViewModel数组
skyBox: new Cesium.SkyBox({
sources: {
positiveX: '/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg',
negativeX: '/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg',
positiveY: '/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg',
negativeY: '/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg',
positiveZ: '/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg',
negativeZ: '/Build/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg'
}
}),//用于渲染星空的SkyBox对象
fullscreenElement: document.body,//全屏时渲染的HTML元素,
useDefaultRenderLoop: true,//如果需要控制渲染循环,则设为true
targetFrameRate: undefined,//使用默认render loop时的帧率
showRenderLoopErrors: false,//如果设为true,将在一个HTML面板中显示错误信息
automaticallyTrackDataSourceClocks: true,//自动追踪最近添加的数据源的时钟设置
contextOptions: undefined,//传递给Scene对象的上下文参数(scene.options)
sceneMode: Cesium.SceneMode.SCENE3D //初始场景模式
}); var mapbox = new Cesium.MapboxImageryProvider({
mapId: 'mapbox.satellite',
accessToken: '你的Token'
});
viewer.imageryLayers.addImageryProvider(mapbox); var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url: '/files/test/tileset.json' }));
viewer.scene.primitives.add(tileset); tileset.readyPromise.then(function (tileset) {
viewer.scene.primitives.add(tileset);
viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.5, -0.2, tileset.boundingSphere.radius * 1.0));
}).otherwise(function (error) {
console.log(error);
}); Cesium.CreditDisplay.cesiumCredit = null;
// 创建DIV标签
var bubbleDiv = document.createElement('div');
viewer.container.appendChild(bubbleDiv);
bubbleDiv.className = 'bubble';
bubbleDiv.style.display = 'none';
bubbleDiv.style.position = 'absolute';
bubbleDiv.style.bottom = '0';
bubbleDiv.style.left = '0';
bubbleDiv.style['pointer-events'] = 'none';
bubbleDiv.style.padding = '4px';
bubbleDiv.style.zIndex = 100; // 有关当前选定功能的信息
var selected = {
feature: undefined,
originalColor: new Cesium.Color()
};
var selectedEntity = new Cesium.Entity();
// 获取默认的鼠标左键处理程序
var clickHandler = viewer.screenSpaceEventHandler.getInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
// 如果不支持轮廓,请在鼠标悬停时将特征颜色更改为黄色,在单击鼠标时将特征颜色更改为绿色。
if (Cesium.PostProcessStageLibrary.isSilhouetteSupported(viewer.scene)) {
//支持剪影
var silhouetteBlue = Cesium.PostProcessStageLibrary.createEdgeDetectionStage();
silhouetteBlue.uniforms.color = Cesium.Color.BLUE;
silhouetteBlue.uniforms.length = 0.01;
silhouetteBlue.selected = []; var silhouetteGreen = Cesium.PostProcessStageLibrary.createEdgeDetectionStage();
silhouetteGreen.uniforms.color = Cesium.Color.LIME;
silhouetteGreen.uniforms.length = 0.01;
silhouetteGreen.selected = []; viewer.scene.postProcessStages.add(Cesium.PostProcessStageLibrary.createSilhouetteStage([silhouetteBlue, silhouetteGreen])); viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(movement) {
// 如果先前选择了功能,请撤消突出显示
silhouetteGreen.selected = []; // P选择一个新功能
var pickedFeature = viewer.scene.pick(movement.position);
if (!Cesium.defined(pickedFeature)) {
clickHandler(movement);
return;
} //选择功能(如果尚未选择)
if (silhouetteGreen.selected[0] === pickedFeature) {
return;
}
// 保存所选功能的原始颜色
var highlightedFeature = silhouetteBlue.selected[0];
if (pickedFeature === highlightedFeature) {
silhouetteBlue.selected = [];
}
//突出显示新选择的功能
silhouetteGreen.selected = [pickedFeature];
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
var highlighted = {
feature: undefined,
originalColor: new Cesium.Color()
}; //将特征悬停上色为黄色。
viewer.screenSpaceEventHandler.setInputAction(function onMouseMove(movement) {
//如果以前突出显示某个功能,请撤消突出显示
if (Cesium.defined(highlighted.feature)) {
highlighted.feature.color = highlighted.originalColor;
highlighted.feature = undefined;
}
// 选择一个新功能
var pickedFeature = viewer.scene.pick(movement.endPosition);
if (!Cesium.defined(pickedFeature)) {
bubbleDiv.style.display = 'none';
return;
}
// 选择了某项功能,因此请显示其叠加内容
bubbleDiv.style.display = 'block';
bubbleDiv.style.bottom = viewer.canvas.clientHeight - movement.endPosition.y + 'px';
bubbleDiv.style.left = movement.endPosition.x + 'px';
var name = pickedFeature.getProperty('name');
if (!Cesium.defined(name)) {
name = pickedFeature.getProperty('id');
}
bubbleDiv.textContent = name;
// 突出显示该功能(如果尚未选择)
if (pickedFeature !== selected.feature) {
highlighted.feature = pickedFeature;
Cesium.Color.clone(pickedFeature.color, highlighted.originalColor);
pickedFeature.color = Cesium.Color.YELLOW;
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
}

结果发现Mapbox 地图加载也太慢了,不知道是我们单位的网不好,还是本身就慢。
Cesium 基于MapBox底图加载3DTiles 模型的更多相关文章
- cesium底图加载底图切换 基于天地图服务
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Cesium专栏-百度地图加载(附源码下载)
Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...
- Cesium专栏-裁剪效果(基于3dtiles模型,附源码下载)
Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...
- cesium 3dtiles模型单体化点击高亮效果
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. c ...
- cesium加载gltf模型点击以及列表点击定位弹窗
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 之 ...
- ceisum_加载倾斜摄影模型
osgb转换为3Dtiles格式(使用工具转换) 然后加载到cesium中(加载代码见下,可以控制模型高度) var offset = function(height,tileset) { conso ...
- cesium加载纽约市3dtiles模型
const tileset = new Cesium.Cesium3DTileset({ url: '../../assets/data/NewYork/tileset.json' }); viewe ...
- Cesium专栏-terrain地形、3dtiles模型、gltf模型 高度采样
在Cesium中,对于terrain地形.3dtiles模型.gltf模型的高度采样是一个很基本的功能,基于此,可以做一些深度应用,而Cesium已经帮我们提供了相应的API,在这里,我帮大家总结一下 ...
- cesium 学习(五) 加载场景模型
cesium 学习(五) 加载场景模型 一.前言 现在开始实际的看看效果,目前我所接触到基本上都是使用Cesium加载模型这个内容,以及在模型上进行操作.So,现在进行一些加载模型的学习,数据的话可以 ...
随机推荐
- HTML页面学习
HTML 文档结构 <!DOCTYPE html> 文档声明 <html lang="en"> 语言 <head> 网站配置信息 <met ...
- Linux - Shell - 算数表达式 - 位运算
概述 shell 中基于 $(()) 的 位运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 位运算 代码 #!/bin/bash # 位运算 arg1=2 arg2 ...
- Python之路Day06
小数据池 == 判断两个值是否相等 is -- 是,判断两边的内存地址是否相同 a=10 b=10 print(a is b) id() -- 查看内存地址 代码块 一个py文件,一个函数,一个模块, ...
- Echat 地图样式格式
1.白色 mapStyle: { styleJson: [{ 'featureType': 'water', 'elementType': 'all', 'stylers': { 'color': ' ...
- (转)DNS使用的是TCP协议还是UDP协议
转自:DNS使用的是TCP协议还是UDP协议 DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况下 ...
- 基于Java+HttpClient+TestNG的接口自动化测试框架(八)------ 针对文件的处理
在实际的接口测试中,有时需要根据情况进行文件的上传和下载.在文件数量比较小的时候,我们当然可以直接处理(比如若干个接口都用一个文件).但是,如果我们上传的文件需要使用不同文件夹里不同的文件,而且数量又 ...
- OpenCV之XML和YAML文件读写
FileStorage类 该类有两个构造函数 FileStorage::FileStorage() FileStorage::FileStorage(const string& source, ...
- AcWing 913. 排队打水
#include <iostream> #include <algorithm> using namespace std; typedef long long LL; ; in ...
- setInterval 和 setTimeout 定时器
前端定时器 setInterval 和 setTimeout setInterval 循环执行 循环执行就是设置一个时间间隔,每过一段时间都会执行一次这个方法,直到这个定时器被销毁掉. 用法是setI ...
- 5G手机来了,但这些问题让其短期内难以成为“香饽饽”
在5G手机喊了太长时间后,其终于在近日不断亮相. 此前据中国质量认证中心官网显示,共有8款5G手机获得3C认证--华为4款,一加.中兴.OPPO和vivo各有一款.随着首批5G手机通过3C认证,意味着 ...