|
|
@ -67,8 +67,8 @@ export default { |
|
|
|
}, |
|
|
|
canEdit: Boolean, |
|
|
|
entries: { |
|
|
|
type: Array, |
|
|
|
default: () => [], |
|
|
|
type: Object, |
|
|
|
default: () => {}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
data() { |
|
|
@ -89,8 +89,8 @@ export default { |
|
|
|
}, |
|
|
|
entries: { |
|
|
|
handler(val) { |
|
|
|
console.log('entries >>>>> ', val) |
|
|
|
if (val && Array.isArray(val)) { |
|
|
|
console.log('地图entries >>>>> ', val) |
|
|
|
if (val) { |
|
|
|
setTimeout(() => { |
|
|
|
this.initEntries(val); |
|
|
|
}, 100); |
|
|
@ -175,59 +175,73 @@ export default { |
|
|
|
}, |
|
|
|
// 根据传入的entries还原点线等 |
|
|
|
initEntries(entries){ |
|
|
|
console.log('initEntries >>>>> ', entries) |
|
|
|
layer?.clear() |
|
|
|
if(!layer){ |
|
|
|
layer = new sycim.EntityLayer('layer').addTo(viewer) |
|
|
|
} |
|
|
|
entries.forEach(item=>{ |
|
|
|
let graphicItem |
|
|
|
if(item.type === 'billboard'){ |
|
|
|
graphicItem = new sycim.Billboard(item.position, `/icons/${item.icon}`); |
|
|
|
graphicItem.setStyle({ |
|
|
|
canEdit: this.canEdit, |
|
|
|
horizontalOrigin: sycim.HorizontalOrigin.CENTER, |
|
|
|
verticalOrigin: sycim.VerticalOrigin.BOTTOM, |
|
|
|
}) |
|
|
|
}else if(item.type === 'polyline'){ |
|
|
|
graphicItem = new sycim.Polyline(item.positions); |
|
|
|
graphicItem.setStyle({ |
|
|
|
canEdit: this.canEdit, |
|
|
|
width: 16, |
|
|
|
clampToGround: true, |
|
|
|
lineType: '1', |
|
|
|
speed_s: 2, |
|
|
|
horizontalOrigin: sycim.HorizontalOrigin.CENTER, |
|
|
|
verticalOrigin: sycim.VerticalOrigin.BOTTOM, |
|
|
|
// 旧数据是数组 |
|
|
|
if(Array.isArray(entries)) return |
|
|
|
if(entries.viewpoint){ |
|
|
|
viewer.scene.camera.flyTo({ |
|
|
|
destination: entries.viewpoint.position, |
|
|
|
orientation: { |
|
|
|
heading: entries.viewpoint.heading, |
|
|
|
pitch: entries.viewpoint.pitch, |
|
|
|
roll: entries.viewpoint.roll, |
|
|
|
}, |
|
|
|
duration: 2, |
|
|
|
}); |
|
|
|
} |
|
|
|
if(entries.graphicsList){ |
|
|
|
entries.graphicsList.forEach(item=>{ |
|
|
|
let graphicItem |
|
|
|
if(item.type === 'billboard'){ |
|
|
|
graphicItem = new sycim.Billboard(item.position, `/icons/${item.icon}`); |
|
|
|
graphicItem.setStyle({ |
|
|
|
canEdit: this.canEdit, |
|
|
|
horizontalOrigin: sycim.HorizontalOrigin.CENTER, |
|
|
|
verticalOrigin: sycim.VerticalOrigin.BOTTOM, |
|
|
|
}) |
|
|
|
}else if(item.type === 'polyline'){ |
|
|
|
graphicItem = new sycim.Polyline(item.positions); |
|
|
|
graphicItem.setStyle({ |
|
|
|
canEdit: this.canEdit, |
|
|
|
width: 16, |
|
|
|
clampToGround: true, |
|
|
|
lineType: '1', |
|
|
|
speed_s: 2, |
|
|
|
horizontalOrigin: sycim.HorizontalOrigin.CENTER, |
|
|
|
verticalOrigin: sycim.VerticalOrigin.BOTTOM, |
|
|
|
|
|
|
|
material: new sycim.PolylineImageTrailMaterialProperty({ |
|
|
|
speed: 2, |
|
|
|
image: `/icons/${item.icon}`, |
|
|
|
repeat: { |
|
|
|
x: 50, |
|
|
|
y: 1 |
|
|
|
} |
|
|
|
material: new sycim.PolylineImageTrailMaterialProperty({ |
|
|
|
speed: 2, |
|
|
|
image: `/icons/${item.icon}`, |
|
|
|
repeat: { |
|
|
|
x: 50, |
|
|
|
y: 1 |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
if(graphicItem){ |
|
|
|
layer.addGraphic(graphicItem); |
|
|
|
graphicsList.push({ |
|
|
|
id: graphicItem.id, |
|
|
|
graphicId: graphicItem.graphicId, |
|
|
|
type: item.type, |
|
|
|
position: graphicItem.position, |
|
|
|
positions: graphicItem.positions, |
|
|
|
icon: item.icon, |
|
|
|
}); |
|
|
|
viewerRemoveEventListener(); |
|
|
|
viewerAddEventListener(); |
|
|
|
// plot.edit(graphicItem, () => { |
|
|
|
// graphicItem.setStyle({ noPushMid: true }); |
|
|
|
// }); |
|
|
|
} |
|
|
|
} |
|
|
|
if(graphicItem){ |
|
|
|
layer.addGraphic(graphicItem); |
|
|
|
graphicsList.push({ |
|
|
|
id: graphicItem.id, |
|
|
|
graphicId: graphicItem.graphicId, |
|
|
|
type: item.type, |
|
|
|
position: graphicItem.position, |
|
|
|
positions: graphicItem.positions, |
|
|
|
icon: item.icon, |
|
|
|
}); |
|
|
|
viewerRemoveEventListener(); |
|
|
|
viewerAddEventListener(); |
|
|
|
// plot.edit(graphicItem, () => { |
|
|
|
// graphicItem.setStyle({ noPushMid: true }); |
|
|
|
// }); |
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 画点线等 |
|
|
@ -265,7 +279,6 @@ export default { |
|
|
|
speed_s: 2, |
|
|
|
horizontalOrigin: sycim.HorizontalOrigin.CENTER, |
|
|
|
verticalOrigin: sycim.VerticalOrigin.BOTTOM, |
|
|
|
|
|
|
|
material: new sycim.PolylineImageTrailMaterialProperty({ |
|
|
|
speed: 2, |
|
|
|
image: `/icons/${iconName}`, |
|
|
@ -277,7 +290,6 @@ export default { |
|
|
|
}) |
|
|
|
} |
|
|
|
if(graphicItem){ |
|
|
|
console.log('最终的graphicItem >>>>> ', graphicItem) |
|
|
|
layer.addGraphic(graphicItem); |
|
|
|
graphicsList.push({ |
|
|
|
graphicId: graphicItem.id, |
|
|
@ -286,7 +298,6 @@ export default { |
|
|
|
positions: graphicItem.positions, |
|
|
|
icon: iconName, |
|
|
|
}); |
|
|
|
console.log('graphicsList >>>>> ', graphicsList) |
|
|
|
plot.edit(graphicItem, () => { |
|
|
|
graphicItem.setStyle({ noPushMid: true }); |
|
|
|
viewerRemoveEventListener(); |
|
|
@ -301,8 +312,22 @@ export default { |
|
|
|
// 提交获取点线等数据 |
|
|
|
submit(){ |
|
|
|
console.log('map -submit >>>>> ', graphicsList) |
|
|
|
const position = viewer.camera.positionWC.clone() // 当前视点中心点位 |
|
|
|
const heading = viewer.camera.heading // 偏航角 |
|
|
|
const pitch = viewer.camera.pitch // 俯仰角 |
|
|
|
const roll = viewer.camera.roll // 翻滚角 |
|
|
|
plot?.stop() |
|
|
|
return graphicsList || [] |
|
|
|
let data = { |
|
|
|
// 当前相机视点 |
|
|
|
viewpoint: { |
|
|
|
position: position, |
|
|
|
heading: heading, |
|
|
|
pitch: pitch, |
|
|
|
roll: roll, |
|
|
|
}, |
|
|
|
graphicsList: graphicsList, |
|
|
|
} |
|
|
|
return data |
|
|
|
}, |
|
|
|
reset(){ |
|
|
|
plot?.stop() |
|
|
|