|
@@ -3,7 +3,6 @@ import libTransform from 'coordtransform';
|
|
|
import axios from 'axios' //{ axios } from '@/api'
|
|
|
|
|
|
|
|
|
-const Id_noIntersect = -100 //path绘制在地图上的点,modelId传这个值,勿更改
|
|
|
let requestLoadCount = 0
|
|
|
let maxLoadingCount = 2; //正在加载模型的最大数目
|
|
|
//0看看,1看见,2深时,3用户上传三维模型,4深时mesh,5深光点云,6深光mesh
|
|
@@ -12,7 +11,7 @@ const ModelTypes = {
|
|
|
1 : {name:'看见(双目转台)', panos4dkk:true, rot90:true},
|
|
|
2 : {name:'深时', },
|
|
|
3 : {name:'用户上传三维模型'},
|
|
|
- 4 : {name:'深时mesh(激光转台)',panos4dkk:true, rot90:true},//3dtiles
|
|
|
+ 4 : {name:'深时mesh(激光转台)',panos4dkk:true, rot90:true},//3dtiles or obj
|
|
|
5 : {name:'深光点云' },
|
|
|
6 : {name:'深光mesh',panos4dkk:true, rot90:true},//3dtiles
|
|
|
7 : {name:'圆周率相机' },//圆周率相机场景
|
|
@@ -20,6 +19,7 @@ const ModelTypes = {
|
|
|
let cesAspect , cesImageryProvider
|
|
|
|
|
|
|
|
|
+const Id_noIntersect = -100 //path绘制在地图上的点,modelId传这个值,勿更改
|
|
|
let isValidPoint = (modelId)=>{//所存的modelId没被删或者它本身不在模型上
|
|
|
return modelId == Id_noIntersect || viewer.objs.children.concat(viewer.scene.pointclouds).some(e=>e.dataset_id == modelId )
|
|
|
}
|
|
@@ -169,14 +169,14 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
|
var pos = camera.position
|
|
|
if (e.viewport.name == 'MainView' ) {
|
|
|
sceneBus.emit('cameraChange', { x: pos.x, y: pos.y, z: pos.z, rotate: camera.rotation })
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- updateMap()
|
|
|
- Potree.Common.intervalTool.isWaiting('updateCamNear', ()=>{
|
|
|
- updateCamNear()
|
|
|
- }, 1000)
|
|
|
- updateCamFar()
|
|
|
+ Potree.Common.intervalTool.isWaiting('updateCamNear', ()=>{
|
|
|
+ updateCamNear()
|
|
|
+ }, 1000)
|
|
|
+ updateCamFar()
|
|
|
+ }
|
|
|
+ if (e.viewport.name == 'MainView' || e.viewport.name == 'top' ) {
|
|
|
+ updateMap()
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
|
|
@@ -777,7 +777,8 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
|
url,
|
|
|
crossOrigin: 'anonymous',
|
|
|
minimumLevel: 0,
|
|
|
- maximumLevel
|
|
|
+ maximumLevel,
|
|
|
+ tilingScheme: new AmapMercatorTilingScheme(), //修改投影,从84->高德
|
|
|
})
|
|
|
if(Potree.settings.showCesium){
|
|
|
cesiumViewer.imageryLayers.removeAll();
|
|
@@ -884,11 +885,11 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
|
//console.log('--addModel',props)
|
|
|
props.isFirstLoad = isLocal ? props.bottom == void 0 : (props.isDynamicAdded || props.mode == 'single') // 在编辑时用户添加的 或 展示单个模型 (props.mode='single'模型展示页, props.mode='many'融合页)
|
|
|
if (props.opacity == void 0) props.opacity = 1
|
|
|
- if (props.type == 'obj') props.type = 'glb'
|
|
|
+ //if (props.type == 'obj') props.type = 'glb'
|
|
|
props.scale /= 100
|
|
|
|
|
|
let getBaseRotation = () => {
|
|
|
- if(ModelTypes[props.fromType]?.rot90 && props.type != 'glb'){
|
|
|
+ if(ModelTypes[props.fromType]?.rot90 && props.type != 'obj'){
|
|
|
return new THREE.Euler(Math.PI / 2, 0, 0)
|
|
|
} else return new THREE.Euler(0, 0, 0)
|
|
|
}
|
|
@@ -1929,43 +1930,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
|
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2ZGM2YzY0ZC1kNWE0LTRiYTgtYTkwNS1kYmJiODRjMWUwMmQiLCJpZCI6MjMzMTQ1LCJpYXQiOjE3MjI5OTUwNTB9.niqpkl6xOkQ2KeJjelyDDDydmSGqKXKb5cX2NyxSNAw'
|
|
|
|
|
|
|
|
|
- class AmapMercatorTilingScheme extends Cesium.WebMercatorTilingScheme {
|
|
|
- constructor(options) {
|
|
|
- super(options)
|
|
|
- let projection = new Cesium.WebMercatorProjection()
|
|
|
- this._projection.project = function(cartographic, result) {
|
|
|
- //WGS84转GCJ02坐标
|
|
|
- /* result = gcoord.transform([
|
|
|
- Cesium.Math.toDegrees(cartographic.longitude),
|
|
|
- Cesium.Math.toDegrees(cartographic.latitude)
|
|
|
- ], gcoord.WGS84, gcoord.GCJ02) */
|
|
|
-
|
|
|
- result = AMapWith84__.wgs84ToAMap({
|
|
|
- x: Cesium.Math.toDegrees(cartographic.longitude),
|
|
|
- y: Cesium.Math.toDegrees(cartographic.latitude)
|
|
|
- })
|
|
|
-
|
|
|
- result = projection.project(new Cesium.Cartographic(Cesium.Math.toRadians(result.x),Cesium.Math.toRadians(result.y)))
|
|
|
- return new Cesium.Cartesian2(result.x,result.y)
|
|
|
- }
|
|
|
- this._projection.unproject = function(cartesian, result) {
|
|
|
- let cartographic = projection.unproject(cartesian)
|
|
|
- //GCJ02转WGS84坐标
|
|
|
- /* result = gcoord.transform([
|
|
|
- Cesium.Math.toDegrees(cartographic.longitude),
|
|
|
- Cesium.Math.toDegrees(cartographic.latitude)
|
|
|
- ], gcoord.GCJ02, gcoord.WGS84) */
|
|
|
-
|
|
|
- result = AMapWith84__.aMapToWgs84({
|
|
|
- x: Cesium.Math.toDegrees(cartographic.longitude),
|
|
|
- y: Cesium.Math.toDegrees(cartographic.latitude)
|
|
|
- })
|
|
|
-
|
|
|
- return new Cesium.Cartographic(Cesium.Math.toRadians(result.x),Cesium.Math.toRadians(result.y))
|
|
|
- }
|
|
|
- }
|
|
|
- }//see : https://blog.csdn.net/hongxianqiang/article/details/140541555 cesium加载高德地图并纠偏
|
|
|
-
|
|
|
+
|
|
|
|
|
|
window.cesiumViewer = new Cesium.Viewer('app', {
|
|
|
useDefaultRenderLoop: true,
|
|
@@ -2173,7 +2138,46 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
|
cesiumViewer.render(); //立即render,否则会和点云render不同步而错位
|
|
|
}//cesium测试沙盒 https://sandcastle.cesium.com/
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ class AmapMercatorTilingScheme extends Cesium.WebMercatorTilingScheme {
|
|
|
+ constructor(options) {
|
|
|
+ super(options)
|
|
|
+ let projection = new Cesium.WebMercatorProjection()
|
|
|
+ this._projection.project = function(cartographic, result) {
|
|
|
+ //WGS84转GCJ02坐标
|
|
|
+ /* result = gcoord.transform([
|
|
|
+ Cesium.Math.toDegrees(cartographic.longitude),
|
|
|
+ Cesium.Math.toDegrees(cartographic.latitude)
|
|
|
+ ], gcoord.WGS84, gcoord.GCJ02) */
|
|
|
+
|
|
|
+ result = AMapWith84__.wgs84ToAMap({
|
|
|
+ x: Cesium.Math.toDegrees(cartographic.longitude),
|
|
|
+ y: Cesium.Math.toDegrees(cartographic.latitude)
|
|
|
+ })
|
|
|
|
|
|
+ result = projection.project(new Cesium.Cartographic(Cesium.Math.toRadians(result.x),Cesium.Math.toRadians(result.y)))
|
|
|
+ return new Cesium.Cartesian2(result.x,result.y)
|
|
|
+ }
|
|
|
+ this._projection.unproject = function(cartesian, result) {
|
|
|
+ let cartographic = projection.unproject(cartesian)
|
|
|
+ //GCJ02转WGS84坐标
|
|
|
+ /* result = gcoord.transform([
|
|
|
+ Cesium.Math.toDegrees(cartographic.longitude),
|
|
|
+ Cesium.Math.toDegrees(cartographic.latitude)
|
|
|
+ ], gcoord.GCJ02, gcoord.WGS84) */
|
|
|
+
|
|
|
+ result = AMapWith84__.aMapToWgs84({
|
|
|
+ x: Cesium.Math.toDegrees(cartographic.longitude),
|
|
|
+ y: Cesium.Math.toDegrees(cartographic.latitude)
|
|
|
+ })
|
|
|
+
|
|
|
+ return new Cesium.Cartographic(Cesium.Math.toRadians(result.x),Cesium.Math.toRadians(result.y))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }//see : https://blog.csdn.net/hongxianqiang/article/details/140541555 cesium加载高德地图并纠偏
|
|
|
+
|
|
|
return sdk
|
|
|
}
|
|
|
|