for (var i = 0; i < osgbmodle.length; i++) {
var osgbpositonitem = osgbpositon[i];
var longitude = osgbpositonitem[0];
var latitude = osgbpositonitem[1];
var index = osgbpositonitem[2];
var lurl = vm.url + osgbmodle[i];
var tileset = new Cesium.Cesium3DTileset({
url: vm.url + osgbmodle[i]
});
console.log("aa"+vm.ul+osgbmodle[i]);
viewer.scene.primitives.add(tileset);
tileset.readyPromise.then(function (argument) {
var position = Cesium.Cartesian3.fromDegrees(longitude, latitude, index);
var mat = Cesium.Transforms.eastNorthUpToFixedFrame(position);
var rotationX = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(heading)));
Cesium.Matrix4.multiply(mat, rotationX, mat);
tileset._root.transform = mat;
// tileset.maximumScreenSpaceError =maximumScreenSpaceError;
});
}
遍历加载osgb模型,只有最后一个模型加载成功。大神帮忙看看吧
我有一个3d tiles模型贴不到地上来,其他模型都可以,就这个不行,设置都是一样的,有没有人遇到过类似的问题,也不报错,有没有什么办法可以调试?
请问各位大牛有没有方法生成osgb的LOD?
用超图的desktop 9d将obj转换为osgb后,发现没有osgb的LOD,只有一个比较大的osgb文件,加载很慢
//天地图
tianditu(){
this.viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
url: "http://t0.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=您的token",
layer: "tdtBasicLayer",
style: "default",
format: "image/jpeg",
tileMatrixSetID: "GoogleMapsCompatible",
show: false,
}));
//注记
this.viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
url: "http://t0.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=您的token",
layer: "tdtImgAnnoLayer",
style: "default",
format: "image/jpeg",
tileMatrixSetID: "GoogleMapsCompatible",
show: false,
}));
},
tiandituStreet(){
this.viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
url: "http://t0.tianditu.com/cva_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cva&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=您的token",
layer: "tdtAnnoLayer",
style: "default",
format: "image/jpeg",
tileMatrixSetID: "GoogleMapsCompatible",
}));
}
https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/?src=HTML Overlays.html&label=All
Cesium 手势控制:手势包括使用鼠标或手指来控制地图缩放、地图移动、地图旋转、地图倾斜、地图点击等功能,并支持开启和禁用手势控-》 ScreenSpaceCameraController + ScreenSpaceEventHandler
仅供参考,来源于他人的分享:
var start = null;
var stop = null;
var CimMap = null;
var Viewer = null;
var camera = null;
var longitude =113.9758022295;
var latitude = 22.5944962474;
var radius = 0.03;
function initAutoRotateParameters(cimMap, viewer){
CimMap = cimMap;
Viewer = viewer;
camera = viewer.camera;
camera.position = new CimMap.Cartesian3(0.25, 0.0, 0.0);
camera.direction = new CimMap.Cartesian3(1.0, 0.0, 0.0);
camera.up = new CimMap.Cartesian3(0.0, 0.0, 1.0);
camera.right = new CimMap.Cartesian3(0.0, -1.0, 0.0);
Viewer.scene.globe.enableLighting = true;
Viewer.scene.globe.depthTestAgainstTerrain = true;
// Follow the path of a plane. See the interpolation Sandcastle example.
CimMap.Math.setRandomNumberSeed(3);
start = CimMap.JulianDate.fromDate(new Date(2015, 2, 25, 8));
stop = CimMap.JulianDate.addSeconds(start, 360, new CimMap.JulianDate());
Viewer.clock.startTime = start.clone();
Viewer.clock.stopTime = stop.clone();
Viewer.clock.currentTime = start.clone();
Viewer.clock.clockRange = CimMap.ClockRange.LOOP_STOP;
Viewer.clock.multiplier = 10.0;
Viewer.clock.shouldAnimate = true;
var entity = Viewer.entities.add({
availability : new CimMap.TimeIntervalCollection([new CimMap.TimeInterval({
start : start,
stop : stop
})]),
position : computeCirclularFlight(longitude, latitude, radius)
});
entity.position.setInterpolationOptions({
interpolationDegree : 2,
interpolationAlgorithm : CimMap.HermitePolynomialApproximation
});
// Set initial camera position and orientation to be when in the model's reference frame.
Viewer.scene.postUpdate.addEventListener(function(scene, time) {
var position = entity.position.getValue(time);
if (!CimMap.defined(position)) {
return;
}
var transform;
if (!CimMap.defined(entity.orientation)) {
transform = CimMap.Transforms.eastNorthUpToFixedFrame(position);
} else {
var orientation = entity.orientation.getValue(time);
if (!CimMap.defined(orientation)) {
return;
}
transform = CimMap.Matrix4.fromRotationTranslation(CimMap.Matrix3.fromQuaternion(orientation), position);
}
// Save camera state
var offset = CimMap.Cartesian3.clone(camera.position);
var direction = CimMap.Cartesian3.clone(camera.direction);
var up = CimMap.Cartesian3.clone(camera.up);
// Set camera to be in model's reference frame.
camera.lookAtTransform(transform);
// Reset the camera state to the saved state so it appears fixed in the model's frame.
CimMap.Cartesian3.clone(offset, camera.position);
CimMap.Cartesian3.clone(direction, camera.direction);
CimMap.Cartesian3.clone(up, camera.up);
CimMap.Cartesian3.cross(direction, up, camera.right);
});
}
function computeCirclularFlight(lon, lat, radius) {
var property = new CimMap.SampledPositionProperty();
var startAngle = CimMap.Math.nextRandomNumber() * 360.0;
var endAngle = startAngle + 360.0;
var increment = (CimMap.Math.nextRandomNumber() * 2.0 - 1.0) * 10.0 + 45.0;
for (var i = startAngle; i < endAngle; i += increment) {
var radians = CimMap.Math.toRadians(i);
var timeIncrement = i - startAngle;
var time = CimMap.JulianDate.addSeconds(start, timeIncrement, new CimMap.JulianDate());
var position = CimMap.Cartesian3.fromDegrees(lon + (radius * 1.5 * Math.cos(radians)), lat + (radius * Math.sin(radians)), CimMap.Math.nextRandomNumber() * 500 + 1800);
property.addSample(time, position);
}
return property;
}
Cesium.Ion.defaultServer="http://127.0.0.1:9080/version.json";
version.json这个文件要有