如何在 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 中提供的文档。
具体来说,当您询问当前位置时,系统会立即返回最后一个已知位置,以便您可以使用它做一些有用的事情。如果您不关心过去的位置,则可以将其丢弃并仅使用最近的位置信息,方法是查看返回的 CLLocation
的 timestamp
属性以确定它的最近时间。
【讨论】:
【参考方案4】:您真的应该阅读CLLocationManager
文档。
您正在执行的操作将不起作用,因为确定设备位置需要一些时间。
因此,您需要等到CLLocationManager
通知您某个位置已被阻止。
您需要实现CLLocationManagerDelegate
,它会告诉您某个位置是否受到阻碍或位置确定是否失败。
您还应该检查位置是否可以阻止:
if ([CCLocationManager locationServicesEnabled])
// The location services are available.
您还应该通过[CCLocationManager authorizationStatus]
检查您是否有权使用定位服务。
【讨论】:
以上是关于如何在 iOS 上获取当前位置? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
即使应用程序处于终止状态或被杀死,如何在 iOS 中获取位置更新? [复制]
在使用 swiftui 的小部件中如何获取当前位置? [复制]