如何在 iOS 上获取当前位置? [复制]

Posted

技术标签:

【中文标题】如何在 iOS 上获取当前位置? [复制]【英文标题】:How Can I Get Current Location on iOS? [duplicate] 【发布时间】:2013-03-07 07:47:46 【问题描述】:

我无法获取当前位置。当我在不同的地方启动我的应用程序时,应用程序可以获得最后一个位置。但我不想最后一个位置。如果您关闭应用程序并重新启动它,现在应用程序可以获取当前位置。即使是首次启动应用程序,如何获取当前位置?

- (void)viewDidLoad

    [super viewDidLoad];

    [locationManager startUpdatingLocation];

    self.mapView.delegate = self;
    [self.mapView setShowsUserLocation:YES];

    locationManager.delegate=self;

    locationManager = [[CLLocationManager alloc] init];

    locationManager.delegate=self;
    locationManager.desiredAccuracy=kCLLocationAccuracyBest;
    locationManager.distanceFilter=kCLDistanceFilterNone;

    location = [locationManager location];

    CLLocationCoordinate2D coord;
    coord.longitude = location.coordinate.longitude;
    coord.latitude = location.coordinate.latitude;
    lat = coord.latitude;
    longt = coord.longitude;

【问题讨论】:

[locationManager startUpdatingLocation];在设置委托后放这一行 【参考方案1】:

你在设置它的委托之前正在做[locationManager startUpdatingLocation];

locationManager = [[CLLocationManager alloc] init];
locationManager.delegate=self;
locationManager.desiredAccuracy=kCLLocationAccuracyBest;
locationManager.distanceFilter=kCLDistanceFilterNone;

[locationManager startUpdatingLocation];

并实现它的委托方法

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation



- (void)locationManager:(CLLocationManager *)manager
       didFailWithError:(NSError *)error



【讨论】:

不,您将不得不等待CLLocationManager 告诉您某个位置已被阻止。 这就是我要找的 你已经给出了很好的解决方案... ram ram sa aapne bhi. 为什么在 2 秒后提示获取位置自动关闭的授权,而我没有任何授权,所以代表不工作?有什么帮助吗? 完成。现在继续:)【参考方案2】:

要获取当前位置及其坐标,您只需在 viewDidLoad 方法中执行此操作即可:

- (void)viewDidLoad 
  [super viewDidLoad];
  locationManager = [[CLLocationManager alloc] init];
  locationManager.delegate = self;
  locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
  locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
  [locationManager startUpdatingLocation];

关于更新位置,使用这个方法:

    - (void)locationManager:(CLLocationManager *)manager
        didUpdateToLocation:(CLLocation *)newLocation
               fromLocation:(CLLocation *)oldLocation
// your code here...

【讨论】:

【参考方案3】:

您应该阅读Location Awareness Programming Guide 中提供的文档。

具体来说,当您询问当前位置时,系统会立即返回最后一个已知位置,以便您可以使用它做一些有用的事情。如果您不关心过去的位置,则可以将其丢弃并仅使用最近的位置信息,方法是查看返回的 CLLocationtimestamp 属性以确定它的最近时间。

【讨论】:

【参考方案4】:

您真的应该阅读CLLocationManager 文档。

您正在执行的操作将不起作用,因为确定设备位置需要一些时间。 因此,您需要等到CLLocationManager 通知您某个位置已被阻止。

您需要实现CLLocationManagerDelegate,它会告诉您某个位置是否受到阻碍或位置确定是否失败。

您还应该检查位置是否可以阻止:

if ([CCLocationManager locationServicesEnabled]) 
    // The location services are available.

您还应该通过[CCLocationManager authorizationStatus]检查您是否有权使用定位服务。

【讨论】:

以上是关于如何在 iOS 上获取当前位置? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

即使应用程序处于终止状态或被杀死,如何在 iOS 中获取位置更新? [复制]

在使用 swiftui 的小部件中如何获取当前位置? [复制]

如何在contenteditable中获取光标的当前位置? [复制]

如何在Android应用程序中获取当前的经纬度? [复制]

如何在模拟器中获取 ios 中的当前位置?

如何从 MSPointerMove 事件中获取指针的当前位置?