【问题标题】:How get user location using iOS geolocation framework如何使用 iOS 地理定位框架获取用户位置
【发布时间】:2014-02-06 22:49:33
【问题描述】:

我正在寻找一个“如果”语句,我正在使用用户的地理位置来创建一个结果。我不知道该怎么做。

例如:

If (USERLOCATION = CANADA) {

//then do something here

}

Else {
//do something else
}

【问题讨论】:

    标签: ios objective-c geolocation location mapkit


    【解决方案1】:

    如果您有用户位置,则可以使用此代码并将国家名称与您的国家/地区名称相匹配。虽然可能存在本地化限制。

    - (void)reverseGeocode:(CLLocation *)location {
        CLGeocoder *geocoder = [[CLGeocoder alloc] init];
        [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
    
            if (!error) {
                CLPlacemark *placemark = [placemarks lastObject];
                NSLog(@"Country: %@", placemark.country);
    
            } else
                NSLog(@"Error %@", error.description);
        }];
    }
    


    然后使用[placemark.country caseInsensitiveCompare:@"canada"] == NSOrderedSame 匹配您要查找的国家/地区。

    【讨论】:

    • 那么如果我使用它,我该如何将它合并到上面的 If 语句中?
    • 谢谢。因此,如果我有一个 enum 语句,它定义了节号(即 enum { sectionOne = 0, sectionTwo = 1, sectionThree = 2 }; )我将如何根据位置更改节号?我在想一个 if 语句,其中包含您编辑的答案,但这似乎不起作用。
    • 更改章节号是什么意思?它看起来与上面的问题不同。
    • 我有一个 tableview,我有不同的部分,我使用 enum 语句列出。最初我认为我可以在 enum 语句中放置一个 if 语句,反之亦然,但似乎我无法这样做来测试您的代码是否会根据用户位置更改 tableview 部分编号(或顺序)。例如,如果您在加拿大,则这些部分将是 sectionA、sectionB 和 sectionC。但是,如果您在英格兰,它将是 sectionC、sectionB 和 sectionA。
    • 虽然枚举应该可以工作,但不要忘记在收到用户数据后调用[self.tableView reloadData] 重新加载表格视图。一些建议,我认为最好的解决方案是在开始时使用正确的部分顺序初始化您的数据源,而不是试图在 tableview 委托方法中找出它。既然我已经回答了上面的问题,你能接受我的回答吗? :)
    【解决方案2】:

    您需要找到一个第三方 API 来回答某个纬度/经度是否在加拿大,或者您需要定义一个表示“加拿大”的边界框并测试您的位置是否在加拿大境内它。

    通过坐标定义“加拿大”可能有点棘手,因为它不是一个正方形,尽管有一些重要的部分是很好的直线。 This answer 可以通过提供边界坐标列表来帮助您定义框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      相关资源
      最近更新 更多