document.write('<script src="../js/tag_service.js"></script>');
|
/**
|
* 定位标签管理
|
*/
|
//显示列表
|
var tagCollection = [];
|
function showTags(data){
|
var content = '';
|
for (var i = 0; i < data.length; i++) {
|
var poiArr = data[i].tagLabelPoi.split(',');
|
var point = Cesium.Cartesian3.fromDegrees(Number(poiArr[0]),Number(poiArr[1]),Number(poiArr[2])+10);
|
var textlength = data[i].tagName.length;
|
var imgurl = '';
|
if(textlength<5){
|
imgurl = '../images/pinimg/33S.png';
|
}else if(4<textlength&&textlength<9){
|
imgurl = '../images/pinimg/33M.png';
|
}else{
|
imgurl = '../images/pinimg/33L.png';
|
}
|
tagCollection.push(viewer.entities.add({
|
position : point,
|
billboard : {
|
image : imgurl,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
scaleByDistance : new Cesium.NearFarScalar(2000, 1, 4000000, 0.5),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(2000, 1, 4000000, 0.5),
|
},label : {
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
text : data[i].tagName,
|
font : 'bold 16px Helvetica',
|
fillColor : Cesium.Color.WHITE,
|
disableDepthTestDistance : 100000000,
|
pixelOffset : new Cesium.Cartesian2(10, -35.0),
|
scaleByDistance : new Cesium.NearFarScalar(2000, 1, 4000000, 0.5),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(2000, 1, 4000000, 0.5),
|
}
|
}));
|
var campoiArr = data[i].tagPoi.split(',');
|
content += '<div class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += '"><div class="col-md-2 mycol"><i onclick="moveToDegrees('
|
+ campoiArr[0]+','+campoiArr[1]+','+campoiArr[2]+','+data[i].tagHeading+','+data[i].tagPitch
|
+ ')" class="fa fa-map-marker myfa"></i></div><label class="col-md-9 mycol" onclick="moveToDegrees('
|
+ campoiArr[0]+','+campoiArr[1]+','+campoiArr[2]+','+data[i].tagHeading+','+data[i].tagPitch+')">'
|
+ data[i].tagName + '</label><div class="col-md-1 mycol">'
|
+ '<i onclick="deleteTagById(\''+data[i].tagId+'\')" class="fa fa-remove myfa"></i></div></div>';
|
}
|
$('#taglayer').html(content);
|
}
|
//清除标签
|
function clearTags(){
|
for (var i = 0; i < tagCollection.length; i++) {
|
viewer.entities.remove(tagCollection[i]);
|
}
|
tagCollection.length = 0;
|
}
|
//并获取当前视角
|
function addTag(viewertag){
|
var camPoi, camHeading, camPitch, poiStr;
|
var addTagHandler = new Cesium.ScreenSpaceEventHandler(viewertag.scene.canvas);
|
addTagHandler.setInputAction(function(movement) {
|
var cartesian = viewertag.scene.pickPosition(movement.position);
|
if (Cesium.defined(cartesian)) {
|
var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
|
var testheight = cartographic.height;
|
if(Number(testheight)<0){
|
var ray = viewertag.camera.getPickRay(movement.position);
|
cartesian = viewertag.scene.globe.pick(ray,viewertag.scene);
|
}
|
cartographic = Cesium.Cartographic.fromCartesian(cartesian);
|
var lng = Cesium.Math.toDegrees(cartographic.longitude);
|
var lat = Cesium.Math.toDegrees(cartographic.latitude);
|
var height = cartographic.height;//模型高度
|
poiStr = lng+','+lat+','+height;
|
|
var camPoiR = viewertag.camera.position;
|
var camCartographic = Cesium.Cartographic.fromCartesian(camPoiR);
|
var camlng = Cesium.Math.toDegrees(camCartographic.longitude);
|
var camlat = Cesium.Math.toDegrees(camCartographic.latitude);
|
var camheight = camCartographic.height;//模型高度
|
camPoi = camlng+","+camlat+","+camheight;
|
camHeading = viewertag.camera.heading;
|
camPitch = viewertag.camera.pitch;
|
}
|
//创建标注
|
var pinBuilder = new Cesium.PinBuilder();
|
var addPin = viewertag.entities.getById("addTagPinId");
|
if(addPin == undefined){
|
viewertag.entities.add({
|
id :"addTagPinId",
|
position :cartesian.clone(),
|
billboard : {
|
image : pinBuilder.fromText('新',Cesium.Color.BLUE,36).toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM
|
},
|
});
|
}else{
|
addPin.position = cartesian.clone();
|
}
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
addTagHandler.setInputAction(function(movement) {
|
if($('#tagName').val().length!=0){
|
if(camPoi!=undefined){
|
addTagHandler = addTagHandler && addTagHandler.destroy();
|
var obj = {
|
'tagId':'0',
|
'tagPoi':camPoi,
|
'tagHeading':camHeading.toString(),
|
'tagPitch':camPitch.toString(),
|
'tagName':$('#tagName').val(),
|
'tagLabelPoi':poiStr,
|
};
|
insertTag(obj);
|
viewertag.entities.removeById("addTagPinId");
|
isaddtag = true;
|
}else{
|
swal("请定位标签!","请重试!","error");
|
}
|
}else{
|
swal("请填写标签名称!","请重试!","error");
|
}
|
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
|
}
|
//控制添加按钮,防止冲突
|
var isaddtag = true;
|
function ctrladdtag(){
|
if(isaddtag){
|
addTag(viewer);
|
isaddtag = false;
|
}
|
}
|