|
@@ -16,8 +16,8 @@ from "@/lang";
|
|
|
import libTransform from "coordtransform";
|
|
|
//交通版laser
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
var CloneJson = function (data) {
|
|
|
var str = JSON.stringify(data);
|
|
|
return JSON.parse(str);
|
|
@@ -43,11 +43,11 @@ var enter = ({
|
|
|
let lastSiteModelData;
|
|
|
let page; //所在页面
|
|
|
const sceneBus = mitt();
|
|
|
-
|
|
|
+
|
|
|
Potree.settings.isOfficial = true; //标记为正式、非测试版本
|
|
|
Potree.settings.isDebug = isDebug;
|
|
|
//Potree.settings.originDatasetId = datasetId;
|
|
|
-
|
|
|
+
|
|
|
/*if (isLocal) {
|
|
|
//本地配置
|
|
|
Potree.settings.isLocal = isLocal;
|
|
@@ -64,24 +64,24 @@ var enter = ({
|
|
|
Potree.settings.urls.prefix1 = Potree.settings.urls.prefix3 = staticPrefix;
|
|
|
Potree.settings.webSite = "wwwroot";
|
|
|
} */
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
Potree.getFileUrl = getFileUrl //转化为另一种得到url的方法
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
Potree.start(dom, mapDom, number);
|
|
|
-
|
|
|
+
|
|
|
|
|
|
parameter.dom = dom;
|
|
|
parameter.number = number;
|
|
|
parameter.viewer = viewer;
|
|
|
- parameter.sceneBus = sceneBus;
|
|
|
+ parameter.sceneBus = sceneBus;
|
|
|
//Potree.settings.rotAroundPoint = false; //试验
|
|
|
-
|
|
|
+
|
|
|
|
|
|
sceneBus.on("visible", (v) => {
|
|
|
viewer.visible = v;
|
|
|
-
|
|
|
+
|
|
|
/* if(v){
|
|
|
viewer.dispatchEvent('content_changed') //避免白屏
|
|
|
} */
|
|
@@ -99,12 +99,12 @@ var enter = ({
|
|
|
msg: e.msg
|
|
|
});
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
/* viewer.addEventListener("reachTopView", (e) => {
|
|
|
- sceneBus.emit("enterTopView")
|
|
|
+ sceneBus.emit("enterTopView")
|
|
|
});
|
|
|
viewer.addEventListener("leaveTopView", (e) => {
|
|
|
- sceneBus.emit("leaveTopView")
|
|
|
+ sceneBus.emit("leaveTopView")
|
|
|
}); */
|
|
|
|
|
|
let cameraChange = (e) => {
|
|
@@ -118,7 +118,7 @@ var enter = ({
|
|
|
rotate: camera.rotation,
|
|
|
//dataset: viewer.atDatasets.map((e) => e.dataset_id),
|
|
|
});
|
|
|
- }
|
|
|
+ }
|
|
|
};
|
|
|
viewer.addEventListener("camera_changed", cameraChange);
|
|
|
viewer.addEventListener("shelterComputed", () => {
|
|
@@ -127,7 +127,7 @@ var enter = ({
|
|
|
});
|
|
|
});
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
{
|
|
|
Potree.loadingByTex = false;
|
|
@@ -171,7 +171,7 @@ var enter = ({
|
|
|
};
|
|
|
break;
|
|
|
|
|
|
- case "LINE":
|
|
|
+ case "LINE":
|
|
|
info = {
|
|
|
measureType: "Distance"
|
|
|
};
|
|
@@ -244,12 +244,12 @@ var enter = ({
|
|
|
/* measure.addEventListener("highlight", (e) => {
|
|
|
bus.emit("highlight", e.state);
|
|
|
}); */
|
|
|
-
|
|
|
+
|
|
|
measure.addEventListener("selected", (e) => {
|
|
|
bus.emit("selected", e.state);
|
|
|
});
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
return {
|
|
|
quit: () => {
|
|
|
Potree.Log("quit结束且删除: " + measure.id, {
|
|
@@ -296,7 +296,7 @@ var enter = ({
|
|
|
},
|
|
|
getDatasetId: () => {
|
|
|
return 1//measure.datasetId;
|
|
|
- },
|
|
|
+ },
|
|
|
|
|
|
getArea: () => {
|
|
|
return measure.area; //{value:area, string:..}
|
|
@@ -331,7 +331,7 @@ var enter = ({
|
|
|
} = viewer.startScreenshot({
|
|
|
type: "measure",
|
|
|
measurement: measure,
|
|
|
- hideMarkers: true,
|
|
|
+ hideMarkers: true,
|
|
|
ifGetPose: true,
|
|
|
},
|
|
|
width,
|
|
@@ -361,7 +361,7 @@ var enter = ({
|
|
|
measure.dispatchEvent('cancelSelect')
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
};
|
|
|
};
|
|
|
|
|
@@ -441,7 +441,7 @@ var enter = ({
|
|
|
dataset_location */
|
|
|
};
|
|
|
}, //全景模式一直获取会很卡
|
|
|
-
|
|
|
+
|
|
|
|
|
|
getPose2() {
|
|
|
const camera = viewer.scene.getActiveCamera();
|
|
@@ -502,11 +502,11 @@ var enter = ({
|
|
|
* 开始测量
|
|
|
*/
|
|
|
startMeasure(type, unit, color) {
|
|
|
- const bus = mitt();
|
|
|
+ const bus = mitt();
|
|
|
let info = getMeasureType(type, unit);
|
|
|
//info.bus = bus
|
|
|
- info.color = color
|
|
|
-
|
|
|
+ info.color = color
|
|
|
+
|
|
|
let measure = viewer.measuringTool.startInsertion( info,
|
|
|
() => {
|
|
|
//done:
|
|
@@ -516,7 +516,7 @@ var enter = ({
|
|
|
//cancel
|
|
|
bus.emit("quit", ret); //删除
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
Potree.Log("startMeasure: " + measure.id, {
|
|
|
font: {
|
|
|
color: "#00c7b2"
|
|
@@ -531,16 +531,16 @@ var enter = ({
|
|
|
object: measure,
|
|
|
...getMeasureFunction(measure, bus),
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
measure.addEventListener("intersectNoPointcloud", () => {
|
|
|
bus.emit("invalidPoint");
|
|
|
});
|
|
|
measure.addEventListener("firstClick", () => {
|
|
|
bus.emit("firstClickMarker");
|
|
|
});
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
return ret;
|
|
|
},
|
|
|
quitMeasure() {
|
|
@@ -559,12 +559,12 @@ var enter = ({
|
|
|
points_datasets,
|
|
|
sid, color) {
|
|
|
const bus = mitt();
|
|
|
-
|
|
|
+
|
|
|
/* if(!viewer.scene.measurements.find(e=>e.isBaseLine)){
|
|
|
type = 'BASE_LINE'
|
|
|
- }
|
|
|
+ }
|
|
|
*/
|
|
|
-
|
|
|
+
|
|
|
let info = getMeasureType(type, unit);
|
|
|
info.points = points;
|
|
|
//info.datasetId = datasetId;
|
|
@@ -587,15 +587,15 @@ var enter = ({
|
|
|
bus,
|
|
|
...getMeasureFunction(measure, bus),
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
viewer.dispatchEvent({type:'camera_changed', viewport:viewer.mainViewport, changeInfo:{}})//update sprite
|
|
|
-
|
|
|
+
|
|
|
return ret;
|
|
|
},
|
|
|
|
|
|
// 开启放大镜
|
|
|
openMagnifier() {
|
|
|
- //console.error('开启放大镜')
|
|
|
+ console.error('开启放大镜')
|
|
|
viewer.magnifier.dispatchEvent({
|
|
|
type: "setEnable",
|
|
|
value: true
|
|
@@ -695,7 +695,7 @@ var enter = ({
|
|
|
// 设置漫游点位显示
|
|
|
changePanoPoint(show) {
|
|
|
Potree.settings.ifShowMarker = !!show;
|
|
|
- },
|
|
|
+ },
|
|
|
|
|
|
getDownloadInfo() {
|
|
|
//获取直接下载点云的参数给后台
|
|
@@ -762,7 +762,7 @@ var enter = ({
|
|
|
isScreenshoting = false;
|
|
|
});
|
|
|
if(viewer.mainViewport.camera.type == 'OrthographicCamera'){
|
|
|
- meterPerPixel = 1 / viewer.mainViewport.camera.zoom
|
|
|
+ meterPerPixel = 1 / viewer.mainViewport.camera.zoom
|
|
|
}
|
|
|
return {finishPromise, meterPerPixel};
|
|
|
},
|
|
@@ -781,50 +781,50 @@ var enter = ({
|
|
|
}
|
|
|
//poschange后会调用这个,如果返回false会变为点云模式,且不会自动变回原先的模式
|
|
|
},
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
trackScenePos(){// 单击场景某个位置 返回当前三维坐标, 调用时场景不能漫游与选择直到获取完成
|
|
|
let deferred = $.Deferred();
|
|
|
- let quit = ()=>{ //取消获取
|
|
|
+ let quit = ()=>{ //取消获取
|
|
|
viewer.removeEventListener('global_click',gotIntersect)
|
|
|
- Potree.settings.unableNavigate = false
|
|
|
+ Potree.settings.unableNavigate = false
|
|
|
Potree.settings.unableUseDepTexPick = false
|
|
|
- viewer.controls.setEnable(true)
|
|
|
+ viewer.controls.setEnable(true)
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
let gotIntersect = (e)=>{
|
|
|
- if(e.intersect && e.intersect.location){
|
|
|
+ if(e.intersect && e.intersect.location){
|
|
|
console.log('quit', e.intersect.location)
|
|
|
quit()
|
|
|
- deferred.resolve(e.intersect.location)
|
|
|
- }
|
|
|
+ deferred.resolve(e.intersect.location)
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- viewer.addEventListener('global_click',gotIntersect)
|
|
|
+
|
|
|
+ viewer.addEventListener('global_click',gotIntersect)
|
|
|
Potree.settings.unableNavigate = true
|
|
|
- Potree.settings.unableUseDepTexPick = true
|
|
|
+ Potree.settings.unableUseDepTexPick = true
|
|
|
|
|
|
|
|
|
viewer.controls.setEnable(false)
|
|
|
-
|
|
|
+
|
|
|
return {
|
|
|
promise: deferred.promise() , //获取的promise, 获取到了返回三维坐标,没获取到返回null
|
|
|
- quit
|
|
|
+ quit
|
|
|
}
|
|
|
-
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- ...parameter.sceneBus,
|
|
|
-
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ ...parameter.sceneBus,
|
|
|
+
|
|
|
},
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
transformPoint(point, datasetId, dataset_location) {
|
|
|
/* //获取由dataset_location转出的position
|
|
|
var r = datasetId != void 0
|
|
@@ -838,7 +838,7 @@ var enter = ({
|
|
|
return r; */
|
|
|
return point
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
// 坐标转换
|
|
|
coordTransform: (originType, pos, targetType, datasetId) => {
|
|
|
// pos 坐标的类型, 当类型为SCREEN时为 { x, y } 其余为 {x, y, z}
|
|
@@ -869,7 +869,7 @@ var enter = ({
|
|
|
(p) => p.dataset_id == datasetId);
|
|
|
}
|
|
|
|
|
|
- if (originType == CoordType.MESH_LOCAL) {
|
|
|
+ if (originType == CoordType.MESH_LOCAL) {
|
|
|
pos = Potree.Utils.datasetPosTransform({
|
|
|
fromDataset: true,
|
|
|
pointcloud,
|
|
@@ -888,7 +888,7 @@ var enter = ({
|
|
|
//for控制点,获取点云未移动前的坐标值。暂且这么写。
|
|
|
if (needMeshLocal) {
|
|
|
//var invMatrix = new THREE.Matrix4().getInverse(viewer.scene.pointclouds[0].transformMatrix)
|
|
|
-
|
|
|
+
|
|
|
pos = Potree.Utils.datasetPosTransform({
|
|
|
toDataset: true,
|
|
|
pointcloud,
|
|
@@ -935,7 +935,7 @@ var enter = ({
|
|
|
}
|
|
|
|
|
|
if (needMeshLocal) {
|
|
|
-
|
|
|
+
|
|
|
|
|
|
pos = Potree.Utils.datasetPosTransform({
|
|
|
toDataset: true,
|
|
@@ -946,41 +946,40 @@ var enter = ({
|
|
|
|
|
|
return pos;
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
enterMeasurement() {
|
|
|
//进入测量模块
|
|
|
- viewer.setLimitFar(false);
|
|
|
+ viewer.setLimitFar(false);
|
|
|
},
|
|
|
leaveMeasurement() {
|
|
|
//退出测量模块
|
|
|
- viewer.setLimitFar(true);
|
|
|
+ viewer.setLimitFar(true);
|
|
|
},
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
|
|
|
loadModel(info) {
|
|
|
info.moveWithPointcloud = true;
|
|
|
- viewer.loadModel(info);
|
|
|
+ viewer.loadModel(info);
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
enterTopView(){
|
|
|
viewer.navCubeViewer.dispatchEvent('enterTopView')
|
|
|
-
|
|
|
+
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
leaveTopView(){
|
|
|
viewer.navCubeViewer.dispatchEvent('leaveTopView')
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
};
|
|
|
Potree.sdk = sdk;
|
|
|
return sdk;
|
|
|
};
|
|
|
|
|
|
export default enter;
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
@@ -992,11 +991,12 @@ export default enter;
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
/*
|
|
|
热点poi加载到的数据中,pos是错误的,只使用dataset_location
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
关于webgl context lost报错:
|
|
|
|
|
@@ -1008,4 +1008,4 @@ export default enter;
|
|
|
|
|
|
|
|
|
|
|
|
-*/
|
|
|
+*/
|