Closed giserMao closed 1 year ago
最近公司领导想用maptalks来为项目业务做支撑,在验证3dtiles加载的时候,测试了不同的数据源,和cesium.js相对比都有不同程度的问题。
const map = new maptalks.Map("map", { center: [0, 0], zoom: 2, }); const layer = new maptalks.Geo3DTilesLayer("3dtiles", { maxGPUMemory: 1024, //最大缓存数,单位 M bytes // loadingLimitOnInteracting : 1, //地图交互过程中瓦片请求最大数量 // loadingLimit : 0, //瓦片请求最大数量 services: [ { url: "http://10.0.3.10/resourceCenter/sicengbim_3dtiles/tileset.json", // maximumScreenSpaceError值越小,加载的模型越清晰,但加载的数据量会变大 // 清晰度可以接受的情况下,推荐把这个值设得越大越好,性能会越好 maximumScreenSpaceError: 8.0, // 数据请求的额外参数 // urlParams: 'v=0.0', // fetch请求的额外参数 // fetchOptions : { credentials : 'include' }, // 把模型降低指定高度,单位米 heightOffset: 0, // 环境光照值,倾斜摄影可以设为[1.0, 1.0, 1.0]获得最清晰的效果,非倾斜摄影可以适当降低,例如设为 [0.2, 0.2, 0.2] // 如果不设置,则采用地图上的默认光照值 ambientLight: [1.0, 1.0, 1.0], // maxExtent: maxExtent }, // 其他的3dtiles数据源 ], }); const vtLayer = new maptalks.VectorTileLayer("vt", { urlTemplate: "http://tile.maptalks.com/test/planet-single/{z}/{x}/{y}.mvt", spatialReference: "preset-vt-3857", }); // 添加到GroupGLLayer中 // GroupGLLayer能实现抗锯齿等后处理,也能加入其他三维图层,让子图层都融合到同一个三维空间中 const groupLayer = new maptalks.GroupGLLayer("group", [ layer, vtLayer, ]); groupLayer.addTo(map); layer.once("loadtileset", (e) => { const extent = layer.getExtent(e.index); map.fitExtent(extent, 0, { animation: false }); });
替换了不同数据格式的3dtiles服务: maptalks (该数据源为osgb,重建了顶层,能正确读到tileset.json里面的范围并跳转,但是没有做任何渲染和请求) cesiumlab加载正常
maptalks (该数据源同样为osgb,重建了顶层,能正确读到tileset.json里面的范围并跳转,有请求但是没有做任何渲染) cesiumlab加载正常
方便的话可以把一部分数据发给我做一下兼容调试,可以加我的qq: 21732416
上述问题已经全部解决,余留一个模型渲染问题在 #313
最近公司领导想用maptalks来为项目业务做支撑,在验证3dtiles加载的时候,测试了不同的数据源,和cesium.js相对比都有不同程度的问题。
加载代码如下:
替换了不同数据格式的3dtiles服务: maptalks (该数据源为osgb,重建了顶层,能正确读到tileset.json里面的范围并跳转,但是没有做任何渲染和请求) cesiumlab加载正常
maptalks (该数据源同样为osgb,重建了顶层,能正确读到tileset.json里面的范围并跳转,有请求但是没有做任何渲染) cesiumlab加载正常