|
@@ -919,6 +919,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ let updateFar = ()=>{
|
|
|
|
+ Potree.settings.cameraFar = Math.max(result.oldFar, viewer.scene.view.position.distanceTo(model.boundCenter) + model.boundingBox.clone().applyMatrix4(model.matrixWorld).getSize(new THREE.Vector3).length())
|
|
|
|
+ }
|
|
|
|
+
|
|
let scaleMeasure
|
|
let scaleMeasure
|
|
let result = {
|
|
let result = {
|
|
bus,
|
|
bus,
|
|
@@ -966,7 +970,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
}
|
|
}
|
|
},
|
|
},
|
|
changeSelect(state) {
|
|
changeSelect(state) {
|
|
- console.error('select', state)
|
|
|
|
|
|
+ //console.error('select', state)
|
|
if (model) {
|
|
if (model) {
|
|
let fly = viewer.images360.latestRequestMode != 'showPanos'
|
|
let fly = viewer.images360.latestRequestMode != 'showPanos'
|
|
MergeEditor.selectModel(model, state, fly, true)
|
|
MergeEditor.selectModel(model, state, fly, true)
|
|
@@ -1083,7 +1087,9 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
MergeEditor.getAllObjects().forEach(m => {//隐藏其他的模型
|
|
MergeEditor.getAllObjects().forEach(m => {//隐藏其他的模型
|
|
if (m != model) Potree.Utils.updateVisible(m, 'enterScaleSet', false)
|
|
if (m != model) Potree.Utils.updateVisible(m, 'enterScaleSet', false)
|
|
})
|
|
})
|
|
-
|
|
|
|
|
|
+ result.oldFar = Potree.settings.cameraFar
|
|
|
|
+
|
|
|
|
+
|
|
let setScale = () => {
|
|
let setScale = () => {
|
|
if (length == void 0 || !measureBuilded) return
|
|
if (length == void 0 || !measureBuilded) return
|
|
|
|
|
|
@@ -1100,10 +1106,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
viewer.scene.view.setView({
|
|
viewer.scene.view.setView({
|
|
position: newCamPos, target: scaleMeasure.getCenter(), duration: 0, callback: () => {
|
|
position: newCamPos, target: scaleMeasure.getCenter(), duration: 0, callback: () => {
|
|
//更改target到measure中心的好处就是可以让相机绕measure中心转,坏处是每次更改都会变一下画面
|
|
//更改target到measure中心的好处就是可以让相机绕measure中心转,坏处是每次更改都会变一下画面
|
|
-
|
|
|
|
|
|
+ updateFar()
|
|
}
|
|
}
|
|
- })
|
|
|
|
-
|
|
|
|
|
|
+ })
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
return {
|
|
return {
|
|
@@ -1155,6 +1161,12 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
MergeEditor.getAllObjects().forEach(m => {//恢复其他的模型
|
|
MergeEditor.getAllObjects().forEach(m => {//恢复其他的模型
|
|
if (m != model) Potree.Utils.updateVisible(m, 'enterScaleSet', true)
|
|
if (m != model) Potree.Utils.updateVisible(m, 'enterScaleSet', true)
|
|
})
|
|
})
|
|
|
|
+
|
|
|
|
+ setTimeout(()=>{//可能还原了
|
|
|
|
+ Potree.settings.cameraFar = Math.max(result.oldFar, viewer.scene.view.position.distanceTo(model.boundCenter) + model.boundingBox.getSize(new THREE.Vector3).length())
|
|
|
|
+ },10)
|
|
|
|
+
|
|
|
|
+
|
|
},
|
|
},
|
|
|
|
|
|
|
|
|
|
@@ -1326,19 +1338,12 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
viewer.dispatchEvent({ type: 'cancel_insertions', dontRemove: true, measure:path }) //要等进入编辑才能继续编辑
|
|
viewer.dispatchEvent({ type: 'cancel_insertions', dontRemove: true, measure:path }) //要等进入编辑才能继续编辑
|
|
}else{
|
|
}else{
|
|
info.points_datasets = props.points.map(e=> e.modelId == Id_noIntersect ? null : e.modelId)
|
|
info.points_datasets = props.points.map(e=> e.modelId == Id_noIntersect ? null : e.modelId)
|
|
- info.dataset_points = info.points = props.points.map(e=>e.position)
|
|
|
|
|
|
+ info.dataset_points = info.points = props.points.map(e=>e.position)//当该点不在任何模型上时,记录的是世界坐标,所以两个都赋值,过后根据有无datasetID选择
|
|
path = viewer.measuringTool.createMeasureFromData(info);
|
|
path = viewer.measuringTool.createMeasureFromData(info);
|
|
-
|
|
|
|
- /* path.points_datasets.forEach((id,i)=>{
|
|
|
|
- if(id == void 0){ //当该点不在任何模型上时,dataset_point记录的其实是point,现在还原
|
|
|
|
- path.points[i] = new THREE.Vector3().copy(info.dataset_points[i])
|
|
|
|
- path.dataset_points[i] = null
|
|
|
|
- }
|
|
|
|
- }) */
|
|
|
|
- //path.update({ifUpdateMarkers:true})
|
|
|
|
-
|
|
|
|
- if(props.line.position) {
|
|
|
|
- let pos = Potree.Utils.datasetPosTransform({fromDataset:true, position: props.line.position, datasetId: props.line.modelId })
|
|
|
|
|
|
+
|
|
|
|
+ if(props.line.position) {
|
|
|
|
+ let pos = props.line.modelId == Id_noIntersect ? new THREE.Vector3().copy(props.line.position) :
|
|
|
|
+ Potree.Utils.datasetPosTransform({fromDataset:true, position: props.line.position, datasetId: props.line.modelId })
|
|
path.updateTitlePos(pos)
|
|
path.updateTitlePos(pos)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1357,10 +1362,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
msg != void 0 && bus.emit('activePoint', msg )
|
|
msg != void 0 && bus.emit('activePoint', msg )
|
|
})
|
|
})
|
|
path.addEventListener('titlePosChanged',(e)=>{
|
|
path.addEventListener('titlePosChanged',(e)=>{
|
|
- console.log('titlePosChanged',path.title,e.position.clone())
|
|
|
|
|
|
+ //console.log('titlePosChanged',path.title, e.position.clone())
|
|
bus.emit('linePositionChange', {
|
|
bus.emit('linePositionChange', {
|
|
- modelId: e.root.dataset_id,
|
|
|
|
- pos: Potree.Utils.datasetPosTransform({toDataset:true, position: e.position.clone(), datasetId: e.root.dataset_id })
|
|
|
|
|
|
+ modelId: e.root ? e.root.dataset_id : Id_noIntersect,
|
|
|
|
+ pos: e.root ? Potree.Utils.datasetPosTransform({toDataset:true, position: e.position.clone(), datasetId: e.root.dataset_id }) : e.position.clone()
|
|
})
|
|
})
|
|
})
|
|
})
|
|
path.addEventListener('click',(e)=>{
|
|
path.addEventListener('click',(e)=>{
|
|
@@ -1427,7 +1432,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
changeVisibilityRange(far){//设置消失距离
|
|
changeVisibilityRange(far){//设置消失距离
|
|
//fadeFar = far
|
|
//fadeFar = far
|
|
//path.setFadeFar(( far== -1 || path.editEnable) ? null : far) //注意:编辑时显示全部
|
|
//path.setFadeFar(( far== -1 || path.editEnable) ? null : far) //注意:编辑时显示全部
|
|
- path.setFadeFar(far== -1 ? null : far)
|
|
|
|
|
|
+ path.setFadeFar(far== -1 ? 0 : far)
|
|
},
|
|
},
|
|
focus(){//highlight
|
|
focus(){//highlight
|
|
|
|
|
|
@@ -1559,13 +1564,19 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ startAddSth(){//开始添加热点
|
|
|
|
+ Potree.settings.disableClick = true //禁止点击事件,尤其是全景模式下,否则会走到下一个点
|
|
|
|
+ viewer.dispatchEvent('start_inserting_tag')
|
|
|
|
+ },
|
|
|
|
+ endAddSth(){
|
|
|
|
+ Potree.settings.disableClick = false
|
|
|
|
+ viewer.dispatchEvent('endTagMove')
|
|
|
|
+ },
|
|
|
|
|
|
createTagging(props){
|
|
createTagging(props){
|
|
let bus = mitt()
|
|
let bus = mitt()
|
|
|
|
|
|
- console.warn('createTagging', props)
|
|
|
|
|
|
+ //console.warn('createTagging', props)
|
|
let root = viewer.scene.pointclouds.concat(viewer.objs.children).find(e=>e.dataset_id == props.modelId)
|
|
let root = viewer.scene.pointclouds.concat(viewer.objs.children).find(e=>e.dataset_id == props.modelId)
|
|
if(!root){
|
|
if(!root){
|
|
return console.error('热点没有找到该modelId,模型是否已经删除?')
|
|
return console.error('热点没有找到该modelId,模型是否已经删除?')
|
|
@@ -1575,8 +1586,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
position: new THREE.Vector3().copy(props.position), //局部坐标
|
|
position: new THREE.Vector3().copy(props.position), //局部坐标
|
|
normal: new THREE.Vector3().copy(props.normal),
|
|
normal: new THREE.Vector3().copy(props.normal),
|
|
root, lineLength: props.altitudeAboveGround,
|
|
root, lineLength: props.altitudeAboveGround,
|
|
- title: props.title, fontsize: props.fontSize,
|
|
|
|
- spotUrl: props.image
|
|
|
|
|
|
+ title: props.title, fontsize: props.fontSize
|
|
}
|
|
}
|
|
let tag = viewer.tagTool.createTagFromData(info)
|
|
let tag = viewer.tagTool.createTagFromData(info)
|
|
|
|
|
|
@@ -1603,14 +1613,16 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
tag.functions = {
|
|
tag.functions = {
|
|
bus,
|
|
bus,
|
|
changeType(type){
|
|
changeType(type){
|
|
- console.log('changeType', tag.title, type)
|
|
|
|
|
|
+ //console.log('changeType', tag.title, type)
|
|
let onMesh = type == '3d'
|
|
let onMesh = type == '3d'
|
|
if(tag.onMesh != onMesh){
|
|
if(tag.onMesh != onMesh){
|
|
tag.changeOnMesh(onMesh)
|
|
tag.changeOnMesh(onMesh)
|
|
}
|
|
}
|
|
},
|
|
},
|
|
visibility(v){// 标注可见性
|
|
visibility(v){// 标注可见性
|
|
|
|
+ //console.log('visibility', tag.title, v)
|
|
Potree.Utils.updateVisible(tag,'user', v)
|
|
Potree.Utils.updateVisible(tag,'user', v)
|
|
|
|
+ viewer.dispatchEvent('content_changed')
|
|
},
|
|
},
|
|
visibilityTitle(v){
|
|
visibilityTitle(v){
|
|
tag.setTitleVisi(v, 'user')
|
|
tag.setTitleVisi(v, 'user')
|
|
@@ -1637,6 +1649,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
tag.changeLineLen(height)
|
|
tag.changeLineLen(height)
|
|
},
|
|
},
|
|
changeCanMove(canMove){
|
|
changeCanMove(canMove){
|
|
|
|
+ //console.log('changeCanMove', tag.title, canMove)
|
|
tag.dragEnable = canMove
|
|
tag.dragEnable = canMove
|
|
},
|
|
},
|
|
|
|
|
|
@@ -1666,11 +1679,11 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
},
|
|
},
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ tag.functions.changeImage(props.image)
|
|
/*
|
|
/*
|
|
|
|
|
|
tag.functions.changeType(props.type)
|
|
tag.functions.changeType(props.type)
|
|
- tag.functions.changeImage(props.image)
|
|
|
|
|
|
+
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
|
|
@@ -1966,6 +1979,12 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ function updateCamFar(){
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
function updateMap( ){
|
|
function updateMap( ){
|
|
|
|
|
|
|
|
|