首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在iPhone算法上实现水平罗盘?

在iPhone算法上实现水平罗盘?
EN

Stack Overflow用户
提问于 2010-03-27 01:47:54
回答 4查看 1.8K关注 0票数 0

如果你正朝东(90度),水平罗盘看起来就像这样。

代码语言:javascript
运行
复制
85----90---95

如果你正面临西北方向355度的问题,它应该是这样的:

代码语言:javascript
运行
复制
350----355---0

当你转动指南针时,这个数字应该从0 -> 360 -> 0开始循环。

所以,我的问题是,您将如何在iPhone上实现这样的视图?我有几个想法:

  1. 用所有的数字和勾标制作一个长图像,并在指南针的航向改变时向左/向右移动,
  2. 将视图中的部分创建为瓷砖,并在指南针的航向与罗盘的航向移动时附加它们,并根据需要在其上写入数字。

你会怎么解决这个问题?我主要是寻找算法的建议,但如果你有代码或伪代码演示,这也是有帮助的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-27 05:14:30

选项一是最简单的。请记住,您可以合成图像的一部分,以处理包装。

票数 1
EN

Stack Overflow用户

发布于 2011-02-11 10:11:10

以下是在iPhone 4中实现水平罗盘的完整解决方案

代码语言:javascript
运行
复制
if ([CLLocationManager locationServicesEnabled] && [CLLocationManager headingAvailable]) 
    {
        m_locationManager=[[CLLocationManager alloc]init];
        m_locationManager.desiredAccuracy=kCLLocationAccuracyBest;
        m_locationManager.headingOrientation=CLDeviceOrientationPortrait;;
        m_locationManager.delegate=self;
        [m_locationManager startUpdatingHeading];

    }

pragma标记CLLocationManagerDelegate方法

代码语言:javascript
运行
复制
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
    CLLocationDirection direction= newHeading.magneticHeading;
    [m_readingsLabel setText:[NSString stringWithFormat:@"Degrees:%f",direction]];

    float radians=direction*M_PI/180;
    m_compassImageView.transform=CGAffineTransformMakeRotation(radians);
}
票数 1
EN

Stack Overflow用户

发布于 2010-03-27 15:51:31

您可以构建标题的模块10,并为10、5和所有其他部分切换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2527829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档