如何使用iOS地理定位框架获取用户位置
我希望做出一个“如果”声明,利用用户的地理位置来创建结果。我不知道怎么做 例如:如何使用iOS地理定位框架获取用户位置,ios,objective-c,geolocation,location,mapkit,Ios,Objective C,Geolocation,Location,Mapkit,我希望做出一个“如果”声明,利用用户的地理位置来创建结果。我不知道怎么做 例如: If (USERLOCATION = CANADA) { //then do something here } Else { //do something else } 您需要找到一个第三方API,该API可以给出关于纬度/经度是否在加拿大的答案,或者您需要定义一个表示“加拿大”的边界框,并测试您的位置是否在其中 用坐标定义“加拿大”可能有点棘手,因为它不是一个正方形,尽管有一些重要的部分是漂亮的直线。可以
If (USERLOCATION = CANADA) {
//then do something here
}
Else {
//do something else
}
您需要找到一个第三方API,该API可以给出关于纬度/经度是否在加拿大的答案,或者您需要定义一个表示“加拿大”的边界框,并测试您的位置是否在其中
用坐标定义“加拿大”可能有点棘手,因为它不是一个正方形,尽管有一些重要的部分是漂亮的直线。可以通过提供边界坐标列表来帮助您定义框。您需要找到第三方API,该API可以回答纬度/经度是否在加拿大,或者您需要定义一个表示“加拿大”的边界框,并测试您的位置是否在其中
用坐标定义“加拿大”可能有点棘手,因为它不是一个正方形,尽管有一些重要的部分是漂亮的直线。可以通过提供边界坐标列表来帮助您定义框。您需要找到第三方API,该API可以回答纬度/经度是否在加拿大,或者您需要定义一个表示“加拿大”的边界框,并测试您的位置是否在其中
用坐标定义“加拿大”可能有点棘手,因为它不是一个正方形,尽管有一些重要的部分是漂亮的直线。可以通过提供边界坐标列表来帮助您定义框。您需要找到第三方API,该API可以回答纬度/经度是否在加拿大,或者您需要定义一个表示“加拿大”的边界框,并测试您的位置是否在其中
用坐标定义“加拿大”可能有点棘手,因为它不是一个正方形,尽管有一些重要的部分是漂亮的直线。可以通过提供边界坐标列表来帮助您定义框。如果您有用户位置,可以使用此代码并将国家名称与您的国家/地区匹配。尽管可能存在本地化限制
- (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”]==SensorDeredName
与您要查找的国家/地区匹配。如果您有用户位置,您可以使用此代码并将国家/地区名称与您的国家/地区匹配。尽管可能存在本地化限制
- (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”]==SensorDeredName
与您要查找的国家/地区匹配。如果您有用户位置,您可以使用此代码并将国家/地区名称与您的国家/地区匹配。尽管可能存在本地化限制
- (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”]==SensorDeredName
与您要查找的国家/地区匹配。如果您有用户位置,您可以使用此代码并将国家/地区名称与您的国家/地区匹配。尽管可能存在本地化限制
- (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 caseinsensitiviecompare:@“canada”]==sensorderedsame
与您要查找的国家匹配。因此,如果我使用此选项,我如何将其纳入上述if声明中?谢谢。因此,如果我有一个enum语句,它定义了节号(即enum{sectionOne=0,sectionTwo=1,sectionTwo=2};),我将如何根据位置更改节号?我在考虑一个if语句,其中包含您编辑过的答案,但似乎不起作用。更改章节号是什么意思?这看起来和上面的问题不同,我有一个tableview,其中我有不同的部分,我用一个enum语句来阐述。最初我认为我可以在enum语句中放置if语句,反之亦然,但似乎我不能这样做来测试代码是否会根据用户位置更改tableview节号(或顺序)。例如,如果您在加拿大,这些部分将是sectionA、sectionB和sectionC。但是,如果您在英国,它将是sectionC、sectionB和sectionA。虽然枚举应该可以工作,但在收到用户数据以重新加载tableView后,不要忘记调用[self.tableView reloadData]
。有一些建议,我认为最好的解决方案是在开始时用正确的节顺序初始化数据源,而不是尝试在tableview委托方法中找出它。既然我已经回答了上面的问题,你能接受我的回答吗?:)那么,如果我使用这个,我如何将它纳入我的if声明中呢?谢谢。因此,如果我有一个enum语句,它定义了节号(即enum{sectionOne=0,sectionTwo=1,sectionTwo=2};),我将如何根据位置更改节号?我在考虑一个if语句,其中包含您编辑过的答案,但似乎不起作用。更改章节号是什么意思?这看起来和上面的问题不同,我有一个tableview,其中我有不同的部分,我用一个enum语句来阐述。最初我认为我可以在enum语句中放置if语句,反之亦然,但似乎我不能这样做来测试代码是否会根据用户位置更改tableview节号(或顺序)。例如,如果您在加拿大,这些部分将是sectionA、sectionB和sectionC。但是,如果您在英国,它将是sectionC、sectionB和sectionA。虽然枚举应该可以工作,但在收到用户数据以重新加载tableView后,不要忘记调用[self.tableView reloadData]
。有一些建议,我认为最好的解决方案是在开始时用正确的节顺序初始化数据源,而不是尝试在tableview委托方法中找出它。既然我已经回答了