首页 / 浏览问题 / 三维GIS / 问题详情
webgl点击查询
84EXP 2018年05月29日

使用产品:iserver 8c 810 操作系统:win10 x64
问题详细描述:利用后口调用站点信息,获取坐标通过viewer.entities.add添加实体到webgl三维上,请问怎么去触发实体对象的点击时间

for(var i = 0; i < jsondata[0].count; i++) {
			var obj = jsondata[0].list[i];
			var codename = obj.siteName;
			var codex = obj.lgtd;
			var codey = obj.lttd;
			viewer.entities.add({
				position: Cesium.Cartesian3.fromDegrees(parseFloat(codex), parseFloat(codey), parseFloat(200)),
				billboard: {
					image: '../command_new/images/layer.png',
					width: 30,
					height: 40,

				},
				name: codename,
				description: obj
			});

		}

1个回答

用viewer.selectedEntityChanged或者注册鼠标点击事件后用scene.pick拾取对象。
5,985EXP 2018年05月29日

请问我以下代码是否正确,和pick(position)中position是传入的坐标还是转化为经纬度坐标

//注册鼠标点击事件
	var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
	handler.setInputAction(function(e) {

		//传入坐标
		var position = scene.pickPosition(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 position1 = Cesium.Cartesian3.fromDegrees(longitude, 23.303985, 300475.837689);

		var pick = scene.pick(position1)
		if(pick != undefined) {
//			$("#bubble").show();
			alert("ok");
		}
		//			if([图片]pick.id) {
		//
		//			}}

	}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

直接传窗口坐标,这类问题建议先参考api文档。

实体对象的selectedEntityChanged事件与s3m图层的pickEvent事件可以同时存在嘛?如果不能,请问怎么去解决这个问题

...