【问题标题】:How to get Location (latitude & longitude value) in variable on iOS?如何在 iOS 上的变量中获取位置(纬度和经度值)?
【发布时间】:2012-09-26 00:14:06
【问题描述】:

我想使用我的应用用户的位置,更具体地说是纬度和经度值。

我需要它们在变量中使用,这样我就可以用 url 发送它们...

我以前从未在 iOS 和 Xcode 上使用过位置,但在 Internet 上没有找到与我的问题相符的内容...

所以我希望有人可以用代码示例向我解释一下:)

谢谢你的帮助 来自德国的劳伦兹

【问题讨论】:

    标签: ios cocoa-touch geolocation location


    【解决方案1】:

    您可以使用 CoreLocation 获取经度和纬度。

    包含框架:

    在导航器中单击您的项目。

    单击“将二进制文件与库链接”下的加号按钮

    将 Corelocation 添加到您的项目中。

    导入头文件:

    #import <CoreLocation/CoreLocation.h>
    

    声明 CLLocationManager:

    CLLocationManager *locationManager;
    

    初始化 locationManager:

    - (void)viewDidLoad
    {
        locationManager = [[CLLocationManager alloc] init];
        locationManager.distanceFilter = kCLDistanceFilterNone; 
        locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
        [locationManager startUpdatingLocation];
    }
    

    然后,使用

    float latitude = locationManager.location.coordinate.latitude;
    float longitude = locationManager.location.coordinate.longitude;
    

    【讨论】:

      【解决方案2】:

      第 1 步:在您的项目中添加 CoreLocation 框架。

      1. 选择目标 -> 构建阶段
      2. 选择将二进制文件与库链接
      3. 点击加号(+)按钮。这将弹出框架列表。
      4. 搜索CoreLocation 框架添加它。

      第 2 步:在要获取位置的视图控制器的头文件中写入以下代码:

      #import <CoreLocation/CoreLocation.h>
      

      另外,在界面中添加CLLocationManagerDelegate

      现在,创建 LocationManager 的对象

       CLLocationManager *locationManager;
      

      第 3 步:在ViewDidLoad 方法中编写以下代码:

          locationManager = [[CLLocationManager alloc] init];
          locationManager.distanceFilter = kCLDistanceFilterNone;
          locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
          [locationManager startUpdatingLocation];
      
          [locationManager requestAlwaysAuthorization]; //Note this one
      

      您可以将所需的准确度值设置为kCLLocationAccuracyBest, kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyHundredMeters, kCLLocationAccuracyKilometer, kCLLocationAccuracyThreeKilometers

      现在,编写下面的代码来获取纬度和经度值

          float Lat = locationManager.location.coordinate.latitude;
          float Long = locationManager.location.coordinate.longitude;
          NSLog(@"Lat : %f  Long : %f",Lat,Long);
      

      第 4 步:在 iOS 8 中,此代码会静默失败,即您不会收到任何错误或警告。

      你需要做两件额外的事情才能让定位工作:

      1. 向您的 Info.plist 添加密钥
      2. 请求授权,要求位置管理器开始。

      以下任何一个或两个键都需要添加到 Info.plist 文件中。

      1. NSLocationWhenInUseUsageDescription
      2. NSLocationAlwaysUsageDescription

      这些是字符串类型,值可以是任何消息描述或空。

      现在您需要为相应的定位方法请求授权。使用以下任一调用:

      1. [self.locationManager requestWhenInUseAuthorization]
      2. [self.locationManager requestAlwaysAuthorization]

      【讨论】:

        【解决方案3】:

        斯威夫特:

        var locationManager = CLLocationManager()
        locationManager.distanceFilter = kCLDistanceFilterNone
        locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
        locationManager.startUpdatingLocation()
        

        更多信息在这里:https://developer.apple.com/library/mac/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/cl/CLLocationManager

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-08
          • 1970-01-01
          • 2013-05-14
          • 2015-04-15
          • 1970-01-01
          • 2011-01-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多