首页 / 浏览问题 / 三维GIS / 问题详情
webGL属性查询
98EXP 2018年01月11日

对倾斜摄影数据进行单体化处理后,发布服务,通过cesium加载地图后,可进行高亮显示,但不会触发pickEvent事件,是什么原因呢?而且通过scene.pick(e.position)得到的对象是undefined

var promise = scene.addS3MTilesLayerByScp("http://localhost:8090/iserver/services/3D-test2/rest/realspace/datas/Config2/config", {
    	 	name: "LB_DZ"
    	});
		promise.then(function(tileLayer) {
			var colors = new Cesium.Color(1, 1, 1, 1);
			tileLayer.selectedColor = colors;
			S3MLayers.push(tileLayer);
			viewer.zoomTo(tileLayer);
			 /*scene.camera.setView({
	                destination : new Cesium.Cartesian3.fromDegrees(109.3893,24.3904,553)
			 })*/
			 //设置属性查询参数
	    	tileLayer.setQueryParameter({
	    		 url: 'http://localhost:8090/iserver/services/data-test2/rest/data/',
	    		 dataSourceName: "test2",
	    		 dataSetName: "Ispolygon_1",
	    		 keyWord: 'SmID'
	    	});
		});
		
		var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas); 
        handler.setInputAction(function(e) {
        	var t = scene.pick(e.position);
        },Cesium.ScreenSpaceEventType.LEFT_CLICK);
		
		viewer.pickEvent.addEventListener(function(feature) { 
                //没有进来
        })

1个回答

首先,webgl进行属性查询需要相应的数据服务。您要先检查下是否发布的相应的数据服务。

然后,您可以参考属性查询的示例,通过修改其中的路径参数,进行模型测试。
5,560EXP 2018年01月11日
发现不设置layer.setQueryParameter,它就不会进入viewer.pickEvent事件,但是选中的对象还是可以高亮显示的,请教一下这个高亮是如何触发的?能否得到这个高亮对象的smid呢?
选择的对象都会默认高亮。

获取选中对象的id,可以添加鼠标点击事件,然后用S3MTilesLayer.getSelection();方法获取选择集id。
已经找到,通过scene.layers.find("LB_DZ").getSelection()
...