簡體   English   中英

獲取用戶的當前位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM