iPhone可以确定您是面向北,南,东还是西?
答案 0 :(得分:7)
如果您正在开发2.2,您可能需要查看以下对CoreLocation的补充:
CLLocation.course
CLLocation.speed
CLLocationDirection
CLLocationSpeed
CLLocation.course将为您提供标题,以便您确定北/南/东/西。
答案 1 :(得分:2)
我不太确定,但这里有一些选择:
在3-10秒内收集两个或更多数据点。用GPS绘制出运动趋向的位置。这可能是你的方向。
此外,您可以使用加速度计来确定iPhone本身的移动方向(向左,向右,向前,向后)。将其与之前的数据配对,您可以获得更准确的读数。
这些并不是很好,因为GPS并不像你想的那么灵敏,加速度计可能比你想要的更灵敏,而且都依赖于运动。但他们可能会工作。
答案 2 :(得分:2)
iPhone或iPhone 3G中没有指南针。 然而,iPhone 3GS增加了数字罗盘,因此这个过程变得更加容易。
在第一代或3G上,确定面临的唯一方法是stalepretzel的建议。但请注意,只有当GPS具有足够的锁定且用户实际移动时,它才会起作用。您必须进行大量平滑才能获得任何类型的可用数据,可能还会向用户提供指示以便在行走时保持静止。
答案 3 :(得分:0)
这可能有点像黑客,但我正在做的是跟踪纬度/经度,然后确定方向。
在我的代码中,我返回GPS信息,我创建了一个会返回纬度和经度的代表
[[self delegate] currentDirectionLat:newLocation.coordinate.latitude Long:newLocation.coordinate.longitude];
使用代理的代码将有一个类似的方法来获取坐标,然后在屏幕上设置一个方向的标签。
-(void)currentDirectionLat:(float)latitude Long:(float)longitude
{
prevLongitude = currentLongitude;
prevLatitude = currentLatitude;
currentLongitude = longitude;
currentLatitude = latitude;
NSString *latDirection = @"";
if (currentLatitude > prevLatitude)
latDirection = @"N";
else if (currentLatitude < prevLatitude)
latDirection = @"S";
NSString *longDirection = @"";
if (currentLongitude > prevLongitude)
longDirection = @"E";
else if (currentLongitude < prevLongitude)
longDirection = @"W";
if ([longDirection length] > 0)
[lblDirection setText:[NSString stringWithFormat:@"%@%@",latDirection,longDirection]];
}
我没有100%对此进行测试,但似乎已经在我写的一个应用程序上工作了。如果您想了解更多信息,请告诉我,我可以转发您已完成的代码。
在iPhone开始转变并进行长期更改之前,您也无法获得良好的阅读效果。但是,要改变它并不需要太多!
答案 4 :(得分:-1)
据我所知,iPhone 3G 没有指南针。不幸的是,除非我遗漏了一些东西,否则我不认为看GPS和加速计数据会帮助你确定iPhone面向哪个方向 - 只有你正在旅行的方向。遗憾。
更新:请注意,问题和这篇文章是在iPhone 3G成为当前型号的时候编写的,从那时起Apple发布了 iPhone 3GS ,其中推出了罗盘强>