Cesium通过AJAX加载并渲染Json文件保存数据

27 篇文章 16 订阅
25 篇文章 2 订阅
var buding_info_entity = viewer.entities.add(new Cesium.Entity());
//*******************************添加pin标注***************************************//
function add_pin_fun(p_position,text){
    var pinBuilder = new Cesium.PinBuilder();    
    
    var questionPin = viewer_g.entities.add({
        parent :buding_info_entity,
        name : 'mark',
        position : Cesium.Cartesian3.fromDegrees(p_position[0],p_position[1],p_position[2]),
        billboard : {
            image : pinBuilder.fromText(text, Cesium.Color.fromBytes(  0, 0,0, 200 )  , 188).toDataURL(),
            verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
            scale: 2, // default: 1.0
            //color: Cesium.Color.LIME, // default: WHITE
            //rotation: Cesium.Math.PI_OVER_FOUR, // default: 0.0
            alignedAxis: Cesium.Cartesian3.ZERO, // default
            width: 40, // default: undefined
            height: 40 ,// default: undefined
            pixelOffsetScaleByDistance: new Cesium.NearFarScalar(1.5e1, 1.0, 1.5e2, 0.01)
        }
    });
    //buding_info_entity.add(questionPin);
}
//*******************************添加Lable标注***************************************//
function add_lable_fun(p_position,text){
    var color = Cesium.Color.YELLOW;
    var surfacePosition = Cesium.Cartesian3.fromDegrees(p_position[0],p_position[1],p_position[2]);
    var heightPosition = Cesium.Cartesian3.fromDegrees(p_position[0],p_position[1],100+p_position[2]*5);

    //WebGL Globe only contains lines, so that's the only graphics we create.
    var polyline = new Cesium.PolylineGraphics();
    polyline.material = new Cesium.ColorMaterialProperty(color);
    polyline.width = new Cesium.ConstantProperty(2);
    polyline.followSurface = new Cesium.ConstantProperty(false);
    polyline.positions = new Cesium.ConstantProperty([surfacePosition, heightPosition]);

    var  unitMarkerbuildingEntity = viewer.entities.add({   
        parent :buding_info_entity,    
        position: Cesium.Cartesian3.fromDegrees(p_position[0],p_position[1],100+p_position[2]*5),
        polyline : polyline,
        label: {
            text: text,
            font: '16px sans-serif',
            fillColor: Cesium.Color.WHITE,
            outlineColor: Cesium.Color.BLACK,
            outlineWidth: 2,
            style: Cesium.LabelStyle.FILL_AND_OUTLINE,
            backgroundColor:Cesium.Color.fromBytes( 17, 57, 101, 230 ),
            showBackground: true,
            horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
            pixelOffset: new Cesium.Cartesian2(0.0, 0),
            pixelOffsetScaleByDistance: new Cesium.NearFarScalar(1.5e1, 1.0, 1.5e4, 0.1)
        }

    });
    //buding_info_entity.add(unitMarkerbuildingEntity);
}
//*******************************添加path标注***************************************//
function add_path_fun(exit){
    var color = Cesium.Color.GREEN;
    var surfacePosition = Cesium.Cartesian3.fromDegrees(exit[0],exit[1],exit[2]);
    var heightPosition = Cesium.Cartesian3.fromDegrees(exit[3],exit[4],exit[5]);
    var polyline = new Cesium.PolylineGraphics();
    polyline.material = new Cesium.PolylineArrowMaterialProperty(color);
    
    polyline.width = new Cesium.ConstantProperty(30);
    polyline.followSurface = new Cesium.ConstantProperty(false);
    polyline.positions = new Cesium.ConstantProperty([surfacePosition, heightPosition]);

    var  unitMarkerbuildingEntity = viewer.entities.add({ 
        parent :buding_info_entity,       
        polyline : polyline,   

    });
    //buding_info_entity.add(unitMarkerbuildingEntity);
}
 //*******************************加载json,添加场馆建筑标注***************************************//	
 function mark_building(url) {
    //buding_info_entity.removeAll();
    $.ajax({
        url: url,
        async: true,
        success: function (data) {
            $.each(data, function(i, marks) {	
                                
                $.each(marks.exit, function(i, obj) {
                add_path_fun(obj);
                });
                $.each(marks.position, function(i, obj) {	
                    if(marks.type =="guan"){
                        var text = "功能:"+marks.dis.function +"\n可容纳人数:"+ marks.dis.num;
                        add_lable_fun(obj,text);
                        
                    }else{
                        add_pin_fun(obj,marks.name);
                    }  
            });
            });
        },
        dataType: "json"
    }); 
}
//*************************
mark_building("./data/buiding_info.json");
buding_info_entity.show = true;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值