私はこの問題を一日中解決しています。ユーザーが「使用中に場所を許可する」を選択してどこにも表示されなくなった場合、私のアプリは場所を更新していません場所は何も返されません
元私はユーザーの場所を見つけるための手段としてmapView.userLocationを使用していましたCLLocationManagerは動作を停止しました。
トップからCoreLocationをインポートし、自分のクラスにCLLocationManagerDelegateを追加しました。 viewDidLoad上
()私は が )(locationManager = CLLocationManagerをしましょうとのviewDidLoadで、私は私がチェックについてつもり locationManager.delegate =自己 locationManager.desiredAccuracy = kCLLocationAccuracyBest
今の方法を持ってい彼らはちょうどそれが私は、ユーザーがそれをtにズームインするボタンを押すその一つで、3節でこれを持って、この方法で
switch CLLocationManager.authorizationStatus(){
case.authorizedWhenInUse:
print(mapView.userLocation?.coordinate)
mapView.setCenter((mapView.userLocation?.coordinate)!, zoomLevel: 12, animated: true)
break
case.notDetermined:
locationManager.requestWhenInUseAuthorization()
break
case .restricted, .denied:
let alertController = UIAlertController(
title: "Background Location Access Disabled",
message: "In order to access this feature you need to allow to access your location while in use", preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alertController.addAction(cancelAction)
let openAction = UIAlertAction(title: "Open Settings", style: .default, handler: {(action) in
if let url = NSURL(string:UIApplicationOpenSettingsURLString) {
UIApplication.shared.openURL(url as URL)
}
})
alertController.addAction(openAction)
self.present(alertController, animated: true, completion: nil)
break
default: locationManager.requestWhenInUseAuthorization()
}
で拒否された場合、ユーザー天気を承認を与えたりしています後ろの現在の場所、ユーザーの周りを検索するもの、最後はviewDidLoadです。ユーザーがプロンプトから設定に送信するオプションを選択してその設定を変更すると、自分のロケーション設定が変更され、アプリにリダイレクトされても何も起きず、ユーザーの場所に関係する操作を行うとクラッシュします。
私はstartUpdatingLocationを使用しようとしましたが、何もしません。また、mapView.userLocationからユーザーの場所を取得しようとすると、それはnilとして出力されます。
私はとても助けの任意の並べ替えが
plistにNSLocationWhenInUseUsageDescriptionとNSLocationAlwaysUsageDescriptionを追加しましたか? – karthikeyan
ここで、mapView.userLocationを記述していますか? –
あなたはどこにいますか?またはシミュレータで? –