[英]Fetching the user's current location
有一個確定用戶位置的功能:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation{
NSLog(@"Latitude = %f", newLocation.coordinate.latitude);
NSLog(@"Longitude = %f", newLocation.coordinate.longitude);
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error{
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
if ([CLLocationManager locationServicesEnabled]){
self.myLocationManager = [[CLLocationManager alloc] init];
self.myLocationManager.delegate = self;
[self.myLocationManager startUpdatingLocation];
有一個考慮兩點之間距離的函數
CLLocation *location1 = [[CLLocation alloc] initWithLatitude:59.957069 longitude:30.323013];
CLLocation *location2 = [[CLLocation alloc] initWithLatitude:60.050043 longitude:30.345783];
float betweenDistance = [location1 distanceFromLocation:location2];
NSLog(@"Distance is %f km", betweenDistance/1000);
我希望location2
是用戶的當前位置。 我如何確定呢?
希望我能正確理解您,但是要計算2個CLLocations
之間的距離,只需使用內置的distance方法 :
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location
將屬性設置為@property (nonatomic,strong) CLLocation *userLocation;
並在didUpdateToLocation
方法中將userLocation = newLocation
更新為userLocation = newLocation
。
在locationManager:didUpdateToLocation:
期間,將向您發送用戶的當前位置。 您需要將其存儲在屬性中。 之后,您可以使用該屬性來確定用戶的位置。
沒有同步調用將獲取當前位置。 您必須等待它從位置管理器中輸入,並且由於多種原因它可能永遠不會出現(您可能沒有訪問此信息的權限,或者GPS可能已關閉,或其他許多原因)。 您的代碼必須能夠處理此問題,並在數據到達時自行調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.