android - 导航kotlin android中的平滑地图旋转
问题描述
我有平滑地图旋转的问题。我使用 Sensor 和 onSensorChanged 来获取用户正在查看的方向。然后我把它放在数学学位上(愤怒-180:180)
degres = Math.toDegrees(mOrientation.get(0).toDouble())
然后将其传递给其他函数
if (gps != null) {
if(degres!! !in lastDegres!!-10..lastDegres!!+10 && degres!!>0 || degres!! !in lastDegres!!-10 ..lastDegres!!+10 && degres!!<0 ){
//here
lastDegres = degres
}
}
if 语句避免在传感器稍微移动时晃动地图。
我的问题是我在这个 if 语句中输入了什么来平滑旋转地图。我已经尝试过这样的事情:
if (gps != null) {
if(degres!! !in lastDegres!!-10..lastDegres!!+10 && degres!!>0 || degres!! !in lastDegres!!-10 ..lastDegres!!+10 && degres!!<0 ){
var result = (lastDegres!! - (degres!! )).toInt()
for (i in 0..result) {
setOrientation(((180 + lastDegres!! + i ).toFloat()))
update()
}
lastDegres = degres
}
}
但它只能在正确的方向上工作,有什么建议可以让左右平滑旋转吗?
// 如果你想使用下一步,请回答是找到离实际位置最近的站点左侧或右侧
if (gps != null) {
realpos = degres!! * -1
if (realpos < 0) realpos += 360
dif = if (realpos > lastDegres!!) { realpos - lastDegres!! } else { (lastDegres!! - realpos) }
if (dif > 10) {
if(realpos > lastDegres!!){
for (i in 1..dif.toInt()*50000) {
orientation = (lastDegres!!.toFloat()+i/50000)
update()
}
}else if (lastDegres!! > realpos) {
for (i in 1..dif.toInt()*50000){
orientation = (lastDegres!!.toFloat()-i/50000)
update()
}
}
lastDegres = realpos
}
解决方案
推荐阅读
- rascal - 函数签名中的模式匹配语法替代
- php - Ajax 成功调用特定引导选项卡
- python - 从字典中绘制每月天气数据
- amazon-web-services - 为什么我从 Postman 收到此 {"message": "Internal server error" }
- html - 是否有一种无需更改网站代码库的无代码方式将小部件添加到网站?
- google-api - GKE MasterAuth clientCertificate 无权访问集群资源
- flutter - 长按动作栏的后退箭头在颤动中显示“返回”吐司,如何删除?
- python - 是否可以用一个字典理解提取两个值?
- flutter - 在 Dart lang 中创建注解
- node.js - Can't access Ionic from browser while using docker