import WKT from 'terraformer-wkt-parser';
|
var pwTool = {
|
modelLayer: null,
|
initGlb(result) {
|
if(!this.modelLayer){
|
this.getModelLayer();
|
}
|
var res= result.pois
|
for (var i in res) {
|
var val = res[i]
|
var std =[];
|
for(var key in val){
|
if(key != "geom"){
|
std.push({
|
name:key,
|
value:val[key]
|
})
|
}
|
}
|
|
var geom = WKT.parse(val.geom)
|
var style = {
|
longitude: geom.coordinates[0],
|
latitude: geom.coordinates[1],
|
altitude: 0,
|
heading: 0,
|
pitch: 0,
|
roll: 0,
|
}
|
var modelMatrix = this.getModelMatrix(style);
|
var model = this.modelLayer.add(Cesium.Model.fromGltf({
|
id: val.id,
|
url: imgUrl+"data/glb/"+val.type+".glb",
|
scale: 1,
|
minimumPixelSize: 20,
|
maximumScale: 20,
|
modelMatrix: modelMatrix,
|
primitive: val
|
|
}));
|
model.primitive=val;
|
model.name = val.name;
|
// var model = Viewer.entities.add({
|
// name: 'build',
|
// position: Cesium.Cartesian3.fromDegrees(geom.coordinates[0], geom.coordinates[1], 1),
|
// label: { //文字标签
|
// text: val.name,
|
// font: '14px',
|
// pixelOffset: new Cesium.Cartesian3(0, -30, 0),
|
// // 字体颜色
|
// fillColor: Cesium.Color.BLACK,
|
// // 背景颜色
|
// backgroundColor: Cesium.Color.AQUA,
|
// // 是否显示背景颜色
|
// showBackground: true,
|
// // 字体边框
|
// outline: true,
|
// // 字体边框颜色
|
// outlineColor: Cesium.Color.WHITE,
|
|
// },
|
// billboard: { //图标
|
// image: imgUrl + '/img/img1.png',
|
// width: 32,
|
// height: 32,
|
// },
|
// properties: val
|
// });
|
// model.properties = res;
|
}
|
// var wkt = this.$wkt.parse(val1)
|
// if (!this.modelLayer) {
|
// this.getModelLayer();
|
// }
|
// for (var i in res) {
|
// var data = res[i]
|
// var style = {
|
// longitude: data.geometry.coordinates[0],
|
// latitude: data.geometry.coordinates[1],
|
// altitude: 0,
|
// heading: 0,
|
// pitch: 0,
|
// roll: 0,
|
// }
|
// var modelMatrix = this.getModelMatrix(style);
|
// var model = this.modelLayer.add(Cesium.Model.fromGltf({
|
// id: data.id,
|
// url: "http://192.168.20.83/JiangSu/Data/glb/路障.glb",
|
// scale: 1,
|
// minimumPixelSize: 20,
|
// maximumScale: 20,
|
// modelMatrix: modelMatrix,
|
// primitive: data.properties
|
|
// }));
|
// model.primitive=data.properties;
|
// model.name = data.properties.name;
|
// }
|
},
|
removeGlb(res) {
|
// var entities = Viewer.entities._entities._array;
|
// for (var i = 0; i < entities.length; i++) {
|
|
// if (entities[i].name == 'build') {
|
// Viewer.entities.remove(entities[i])
|
// i--
|
// }
|
// }
|
|
|
if (!this.modelLayer) return
|
|
var primitives = this.modelLayer._primitives
|
for (var i in res) {
|
for (var j = 0; j < primitives.length; j++) {
|
if (res[i].id == primitives[j].id) {
|
this.modelLayer.remove(primitives[j]);
|
j--
|
}
|
}
|
}
|
},
|
getModelMatrix(res) {
|
var headingPitchRoll = new Cesium.HeadingPitchRoll(res.heading, res.pitch, res.roll);
|
var position = Cesium.Cartesian3.fromDegrees(res.longitude, res.latitude, res.altitude);
|
var modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(
|
position, headingPitchRoll, Cesium.Ellipsoid.WGS84,
|
Cesium.Transforms.eastNorthUpToFixedFrame,
|
new Cesium.Matrix4());
|
return modelMatrix;
|
},
|
getModelLayer() {
|
if (this.modelLayer == null) {
|
this.modelLayer = new Cesium.PrimitiveCollection();
|
this.modelLayer.id = "model_layer";
|
window.Viewer.scene.primitives.add(this.modelLayer);
|
}
|
},
|
}
|
export default pwTool;
|