在Obj-C中获取GPS坐标

时间:2015-07-19 13:25:01

标签: ios objective-c

我正在尝试在自定义课程中获得实际的GPS坐标(纬度和经度)。我正在根据用户本地化获取实际的天气信息,我需要用GPS坐标填充API URL。

我找不到任何关于此的信息,所有教程都是关于实时GPS数据刷新。你想帮助我吗?

2 个答案:

答案 0 :(得分:0)

首先,您需要的一切都在您已经调查过的内容中:CoreLocation。

对于像天气一样的应用,它不会(通常)在几英尺/米的范围内变化,而是在更大的尺度上变化,因此不是在实时"实时"变更,您将要求"重大变更"。

请参阅https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html的摘录:

  

获取用户的当前位置

     

核心位置框架可让您找到设备的当前位置,并在您的应用中使用该信息。该框架会将设备的位置报告给您的代码,并根据您配置服务的方式,在收到新数据或改进数据时提供定期更新。

     

两个服务可以为您提供用户的当前位置:

     
      
  • 标准位置服务是一种可配置的通用解决方案,用于获取指定精确度的位置数据和跟踪位置更改。
  •   
  • 重要更改位置服务仅在设备位置发生重大变化(例如500米或更长)时才会提供更新。   收集位置数据是一项功耗密集型操作。对于大多数应用程序,通常足以建立初始定位,然后在此之后定期获取更新。无论位置数据在您的应用中的重要性如何,您都应该选择合适的位置服务并明智地使用它以避免耗尽设备的电池电量。例如:
  •   
     

如果您的iOS应用程序必须在后台保持监控位置,请使用标准位置服务并指定UIBackgroundModes键的位置值以继续在后台运行并接收位置更新。 (在这种情况下,您还应确保位置管理器的pausesLocationUpdatesAutomatically属性设置为YES以帮助节省电量。)可能需要此类位置更新的应用程序示例是健身或精细导航应用程序。   如果GPS级别的准确度对您的应用程序并不重要,并且您不需要持续跟踪,请使用sign -ant-change位置服务。此服务可以通过不连续跟踪并且仅在发生重大更改时唤醒设备并启动应用程序来节省电量。

在文档的该部分下方,您将看到标题下的示例代码:

  

启动重大更改位置服务

将这些内容与您的研究相结合(以及可能的地理编码,将坐标转换为地标代码等地标数据)应该可以为您提供天气API所需的一切。

答案 1 :(得分:0)

我会显示我的实际代码。它工作过一次然后我总是得到0.000000。为什么呢?

ViewController.h

addEventListener

这是我的实施文件

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@import CoreLocation;

@interface ViewController : UIViewController <CLLocationManagerDelegate>
    @property (strong, nonatomic) CLLocationManager *locationManager;
    - (IBAction)button:(id *)sender;
@end