1. 程式人生 > 實用技巧 >SQL查詢,點選三維圖層,查詢屬性資訊

SQL查詢,點選三維圖層,查詢屬性資訊

//  拾取屬性
function select(){
    handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
    handler.setInputAction(function (e) {
        // 獲取點選位置笛卡爾座標
        var position = scene.pickPosition(e.position);
        // var pick =  viewer.scene.pick(e.position);
        //將笛卡爾座標轉化為經緯度座標
        var cartographic = Cesium.Cartographic.fromCartesian(position);
        
var longitude = Cesium.Math.toDegrees(cartographic.longitude); var latitude = Cesium.Math.toDegrees(cartographic.latitude); var height = cartographic.height; // 獲取選中的模型 var selectedLayer = viewer.scene.layers.getSelectedLayer(); var modelSelected,layerName,dataSetName;
// 沒有選中則返回,選中則查詢 if(selectedLayer == undefined||selectedLayer["name"] == undefined){ return; }else{ modelSelected = selectedLayer.getSelection(); // 獲取圖層名 layerName = selectedLayer.name; // 處理成查詢的格式,去掉@符號後面的,包括@ dataSetName = '["'+layerName.substring(layerName.indexOf("@")+1,layerName.length)+':'+layerName.substring(0,layerName.indexOf("@"))+'"]'; }
// 拼接filter條件,smid=0 var filter='smid='+modelSelected[0]; // 引數分別是url,過濾條件,dataSetName queryBySql("http://172.16.8.76:8090/iserver/services/data-pipidata/rest/data", filter, dataSetName, function (result) { debugger; var data = result.result.features[0].attributes; var material = data.MATERIAL; // 管徑 毫米 var ds = data.D_S; // 終點高程 var eh = data.E_H; // 起點高程 var sh = data.S_H; var divId="popup00"; $("#"+divId).remove(); var bubble = $("<div id='"+divId+"' class='bubble'><div class='iconClose'><i class='iconfont icon-guanbi' onclick='closeThisBubble(this)'></i></div></div>"); var bubbleDiv ="<div class='popup-main'>"; bubbleDiv+="&nbsp;&nbsp;&nbsp;<p>材質:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+material+"</p>"; bubbleDiv+="&nbsp;&nbsp;&nbsp;<p>起點高程(米)"+sh+"</p>"; bubbleDiv+="&nbsp;&nbsp;&nbsp;<p>終點高程(米):"+eh+"</p>"; bubbleDiv+="&nbsp;&nbsp;&nbsp;<p>管徑(毫米):&nbsp;&nbsp;&nbsp;&nbsp;"+ds+"</p>"; debugger; bubble.append(bubbleDiv); $(viewer._element).append(bubble); var position = Cesium.Cartesian3.fromDegrees(parseFloat(longitude), parseFloat(latitude),parseFloat(height)); //氣泡樣式 var commonBubble = new CommonBubble(viewer.scene,divId); //氣泡位置 commonBubble.showAt(position); //氣泡顯示 commonBubble.visibility(true); }); }, Cesium.ScreenSpaceEventType.LEFT_CLICK); } // iserver的sql查詢 function queryBySql(url, attributeFilter, datasetNames, processCompleted, processFailed) { var getFeatureParam, getFeatureBySQLService, getFeatureBySQLParams; getFeatureParam = new SuperMap.REST.FilterParameter({ attributeFilter: attributeFilter, // fields: ["SMID", "MODELNAME"] }); getFeatureBySQLParams = new SuperMap.REST.GetFeaturesBySQLParameters({ queryParameter: getFeatureParam, toIndex: -1, // returnContent: false, datasetNames: datasetNames }); getFeatureBySQLService = new SuperMap.REST.GetFeaturesBySQLService(url, { eventListeners: { "processCompleted": processCompleted, "processFailed": processFailed } }); getFeatureBySQLService.processAsync(getFeatureBySQLParams); }