swift - 迅速。将北向表示为航向方向的范围
问题描述
我正在使用注释和 MapKit。我有一个自行车注释,其中默认图像指向东方(即具有上、下、前和后概念的自行车的侧视图)。如果自行车的 CLLocation 路线在西方,我需要使用翻转的图像(即指向西方的图像),否则自行车会向后行驶。为了避免注释图像的过度“翻转”,我希望在正北和正南有一个缓冲区,例如,如果自行车的路线是东边(因此使用的图像是朝东的自行车图像),如果课程向西一点(比如 184 度),那么这被认为是“在缓冲区内”,我不会在更新的注释上使用翻转的图像。假设缓冲区在正北和正南两侧各 5 度。我想捕捉这些“方向”
解决方案
如果我理解正确,翻转发生在南北轴上。enum
有一个for 翻转很有用:
enum Direction { //image flipping
case left, right
}
您可以使用它来跟踪翻转状态
var direction: Direction = .right // east
该课程是Double
从0到360度的课程。
var course = CLLocation.course
缓冲区随心所欲
var buffer:Double = 5 // 5 degrees each side of north or south
您可以根据当前状态设置图像翻转direction
。
func setImage(_ course: course) {
switch(direction){
case .right: // east
if(course < 360 - buffer || course > 180 + buffer){
direction = .left
// flip image to left
}
case .left: // west
if(course > buffer || course < 180 - buffer){
direction = .right
// flip image to right
}
}
}
请注意,buffer
例如,在 355 到 5 度之间的正北创建了一个死区,这direction
是最后设置的。这意味着当您的路线从东向西移动时,仅当您通过缓冲区边界时,图像才会向西翻转。
推荐阅读
- python - 用python生成wordcloud
- javascript - 未捕获的 TypeError:当代码在 2 个文件中分隔时,r 不是构造函数
- c# - CS0120 非静态字段、方法或属性 'Userscache.GetUsersAsync() 需要对象引用,
- stm32 - STM32-G474RE - 通过 SPI 从 EEPROM 读取数据的问题
- reactjs - 如果用户导航到不同的页面和表单是脏的,则显示未保存的更改警告
- python - 自动化终端行命令的最佳方法?Mac/get_iPlayer
- python - 无法在我的 HTML 文件 Django 上应用 CSS
- firebase - 无法通过邮递员登录 Google 帐户以预览 Firebase 成功响应代码
- android - GradientDrawable - 颜色渐变
- javascript - 如何在 javascript 中对包含 base64 编码图像的字符串进行切片并显示第一张图像