Gmap实现旋转原理以及代码

本文介绍了GMap控件实现地图旋转的原理,通过计算校准值来保持旋转角度的一致性。在鼠标按下时计算当前点与旋转角度的差值作为校准值,后续移动中减去该值更新旋转角度。详细阐述了相关事件如MouseDown、MouseMove的处理,并提供了getAngle方法计算两点之间的角度。
摘要由CSDN通过智能技术生成
原理:按下鼠标的时候(开始移动)计算校准值,后续的移动中都减去这个校准值。例如当前旋转角度为10,当前按下鼠标点开始移动的旋转角度为30,那么校准值为30-10=20,意思就是从角度为30这个点开始都要减去20让旋转角度值从10开始,不能跳动。后续的持续按下鼠标右键移动中都使用鼠标Location点的角度减去这个校准值作为新的旋转角度值。
即:bearing=newAngel-step;
下面是实现的一些列事件和方法:
getAngle方法计算某点对于中心点的角度。
按下鼠标时计算当前点和当前角度的差值作为校准值:
移动鼠标事件实现旋转:总是将当前点的角度减去校准值作为新的旋转角度:
//自己注意处理注册事件gMap为我的地图控件:
//gMap.MouseMove += gMap_MouseMove;
//gMap.MouseDoubleClick += gMap_MouseDoubleClick;
//gMap.MouseDown += gMap_MouseDown;
//gMap.MouseUp += gMap_MouseUp;

private static object objForLock__step = new object();
        private double __step = 0;
        private double _step //校准值
        {
            get { lock (objForLock__step) { return __step; } }
            set { lock (objForLock__step) { __step = value; } }
        }

private void gMap_MouseDo
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值