首页 / 浏览问题 / 三维GIS / 问题详情
api中的鼠标
84EXP 2017年12月22日

您好,请问你们api中

zDelta 获取鼠标滚轮滚动的距离。

这个是不是假的?(三维插件)

1个回答

您好,该问题已在测试,有结果了会第一时间告知您。

还有想问下您想实现什么需求呢?
5,560EXP 2017年12月22日
还有一个问题,当鼠标滚轮滚动缩小放大地图时候,我想得到的相机高度为300时候此时相机的经纬度,但是我发现滚轮滚动是一个突变的值,得不到相机高度为300时的经纬度?
您好,请问您测试出结果了吗?
请问您那边的具体需求是什么,限制相机高度吗?zDelta我这边测了下,确实返回0,问了研发研发希望知晓您的需求。

另外,如果您想限制相机高度的话,您可以这样做:

1、监听鼠标滚轮事件,并用一个全局变量记录当前的第一人称相机高度

2、设置判断语句,当第一人称相机高于z时,通过当前相机与全局变量相机的参数,计算出高程z对应的经纬度,并记录为新的全局变量beta。

3、当缩小场景时,强制跳转到全局变量相机beta;当放大场景使得相机低于z时,清除beta。
我是想要实现鼠标滚轮进行放大和缩小范围的控制,当达到放大范围边界时候,此时鼠标滚轮继续放大,这时相机经纬度和高度都不变,也就是放大到这个值后,继续滚轮继续放大此时画面不会有变化,我已经能把相机高度控制住,控制不住经纬度,所以我出来的效果是放大到一定值后,继续滚动鼠标滚轮,此时场景确实不能放大,但是会出现平移效果,我分析了一下,我出现这种效果是把高度控制住了,但是经纬度没有控制住,请问您有好的思路吗?另外您说的“通过当前相机与全局变量相机的参数,计算出高程z对应的经纬度”,这个我不太理解,是不是直接相机获取经纬度就可以了???
控制经纬度的办法是,当相机到达临界点时,直接用全局变量记录当前第一人称相机的经纬度;然后当相机在临界点拉高的时候,返回之前记录的全局变量。

最简单的办法是,您可以在自定义事件(鼠标键以及滚轮)里实时记录当前相机视角,同时,当相机高于临界点时,强行将相机跳转到之前记录的相机视角。
您好,if(h >= 300 ){
            camera1.set_altitude(300);
             a = camera1.get_longitude();
             b = camera1.get_latitude();

我通过这种方式记录相机经纬度的,不知道怎么返回之前记录的全局变量,请明示?
var lastCamera;//在初始化场景完毕后设置lastCamera = scene.get_firstPersonCamera(); 
SuperMap.Web.UI.Action3Ds.YourAction.prototype ={
	dispose:function()
	{
		this._sceneControl = null;
	},
	onMouseWheel:function(e){
		var cameraCur = scene.get_firstPersonCamera(); 
		if(cameraCur.get_altitude() > x){
			scene.set_firstPersonCamera(lastCamera);
		}
		else{
			lastCamera = cameraCur; 
		}
	}
};

类似于这样

...