Can*_*pus 23 core-location mapkit cllocationmanager ios
问题:我似乎无法停止Core Location向我的应用/跟踪发送更新.
我在做什么:在我的viewWillAppear调用中self.locationManager,将其传递给一个方法,以显示用户在地图上的位置(实例MKMapView).重写getter以检查服务器的可用性,以查看是否已授权.如果是这样,它allocs/inits和startMonitoringSignificantLocationChanges和returns.
在viewDidDisappear,我打电话[self.locationManager stopUpdatingLocation].但我仍然可以在状态栏中看到位置图标.即使我通过双击主页按钮并关闭它来终止应用程序,图标仍然存在...即使在延长的时间(10分钟以上)之后.当我转到设置应用程序时,它告诉我我的应用程序仍在使用位置服务(紫色图标).
问题:我在这里错过了什么?为什么位置更新不会停止?
提前致谢.
jni*_*nic 16
相反的startMonitoringSignificantLocationChanges是不stopUpdatingLocation,它是stopMonitoringSignificantLocationChanges.
你可能要替换startMonitoringSignificantLocationChanges用startUpdatingLocation的更多的定期更新的缘故,除非你有只监控显著位置变化的具体原因.
查看CLLocation文档以获取更多详细信息.
Chr*_*her 14
我也遇到了与Canopus相同的问题.看来即使调用了stopUpdatingLocation,如果启用了showUserLocation,导航指针仍会驻留在状态栏上.也许这是一个错误?可能是因为我正在运行并使用iOS 4.2.1进行测试,此问题可能已在以后的SDK中修复.
我认为如果调用stopUserLocation,它也会停止显示用户位置,因为我使用它的视图已经消失并随后被释放.
在停止用户位置更新之前,您似乎必须将showUserLocation设置为NO.
无论如何,在我的viewDidLoad方法中,我有以下代码:
self.mapView.showsUserLocation = YES;
Run Code Online (Sandbox Code Playgroud)
更多代码......
- (void)viewWillDisappear:(BOOL)animated
{
if (locationManager)
{
mapView.showsUserLocation = NO;
[locationManager stopUpdatingLocation];
}
[super viewWillDisappear:animated];
}
- (void)dealloc
{
if (locationManager)
{
[locationManager release];
locationManager = nil;
}
(other code)
}
Run Code Online (Sandbox Code Playgroud)
迅速:
您的地图和位置管理器都需要停止:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
locationManager.stopMonitoringSignificantLocationChanges()
locationManager.stopUpdatingLocation()
mapView.showsUserLocation = false
}
Run Code Online (Sandbox Code Playgroud)
您可以在 Xcode 的 Energy Impact 下的调试导航器中调试/检查位置服务的使用情况。
| 归档时间: |
|
| 查看次数: |
23071 次 |
| 最近记录: |