ios appで場所を1度だけ取得する方法。iosで一度だけ場所を取得する方法
-2
A
答えて
3
ロケーションを取得したら、locationManagerの更新をやめ、locationManagerもリリースします。これは、locationManagerが不要になったためです。
[self.locationManager stopUpdatingLocation];
self.locationManager.delegate = nil;
self.locationManager = nil;
0
ios9以上では、方法は[locationManagerInstance requestLocation]
です。しかし、この場所は最新かつ最善であるため、デリゲートメソッドを呼び出すためには、これは約10秒かかるでしょう。
別の方法(以前のios9バージョン)では、以前の方法[locationManagerInstance startUpdatingLocation]を使用して直接の場所を取得し、タイムスタンプを検証して最高の精度を得ることもできます。
ここに私が場所を取得するために使用しているコードがあります。 locationManagerインスタンスのグローバル参照を作成します。
@interface ViewController()
{
CLLocationManager *locationManager;
}
your.mファイル内のこれらのユーティリティメソッドを実装
-(BOOL)canUseLocationManager{
if(([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse) || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways)){
return YES;
}
return NO;
}
-(void) getCurrentLocation {
locationManager.delegate = self;
// ios 9 and above versions only
//[locationManager requestLocation]; // This may take more time when compare to alternate method
// ios 2 and later versions can use this method
[locationManager startUpdatingLocation];
}
-(void) stopGettingCurrentLocation {
[locationManager stopUpdatingLocation];
}
実装位置サービス委譲
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
if([CLLocationManager authorizationStatus] != kCLAuthorizationStatusNotDetermined){
[self doneCheckingAccessStatusForLocation];
}
}
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
[manager stopUpdatingLocation];
locationManager.delegate = nil;
/* Clean the locationManager instance if you don't need*/
//locationManager = nil;
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
[manager stopUpdatingLocation];
locationManager.delegate = nil;
CLLocation* location = [locations lastObject];
NSDate* eventDate = location.timestamp;
/* Implement your business logics here */
/* Clean the locationManager instance if you don't need*/
//locationManager = nil;
}
ロケーション・マネージャ・インスタンスを作成する
最終の方法および場所に
-(void)checkForLocationService{
if(!locationManager){
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
locationManager.delegate = self;
if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined){
[locationManager requestWhenInUseAuthorization];
}else{
[self doneCheckingAccessStatusForLocation];
}
}
-(void)doneCheckingAccessStatusForLocation{
if([self canUseLocationManager]){
[self getCurrentLocation];
}
}
をフェッチ開始
checkForLocationServiceメソッドを呼び出し、成功と失敗の委譲メソッドについてのロジックを実装します。
[self checkForLocationService];
関連する問題
- 1. 両方の場所の緯度と経度からある場所の方向を取得する方法は?
- 2. 角度$の場所からホスト+ベースを取得する方法
- 3. 計算された緯度と経度で場所を取得する方法
- 4. 一度だけマッチする方法は?
- 5. すべてのアプリケーションで一度だけリクエストを取得する -
- 6. Firebaseで一度だけデータを取得する
- 7. 緯度と経度の場所の種類を取得する方法
- 8. 文から一度だけ値を得る方法
- 9. キューから一度だけメッセージを読み取る方法
- 10. requestLocationを使用して一度だけユーザーの場所をリクエストする
- 11. iOSのiPodライブラリで曲のファイルの場所を取得する方法
- 12. 配列の要素を一度だけ取得する
- 13. RabbitMQは一度だけキューからメッセージ数を取得する
- 14. iOSのgoogle mpクラスタからオブジェクトや場所を取得する方法は?
- 15. ウィンドウをJavaで一度だけ表示する方法Timer
- 16. レベルで一度だけメッセージを送信する方法Unity3d C#
- 17. avafスキーマをカフカで一度だけ送信する方法
- 18. JQuery Mobile pageinitでスクリプトを一度だけ実行する方法
- 19. iOSフォトライブラリの写真をその場所で取得する
- 20. placenameだけを取得する方法もlanと緯度のアドレスです
- 21. CLLocationManagerで場所を取得する頻度が低い
- 22. gpsの場所を一度5分間アンドロイドに取得するには?
- 23. WordPress環境でjQueryに一度だけプリペンドする方法
- 24. スウィフトで一度だけジャンプする方法は?
- 25. Twitter検索APIでツイートの場所を取得する方法
- 26. Googleマップで場所を保存して取得する方法
- 27. asp.netで現在のユーザーの場所を取得する方法
- 28. JBossで現在のEARの場所を取得する方法
- 29. SMSでGPSの場所を取得する方法
- 30. アンドロイドリストビューで場所を取得する最善の方法
あなたの問題は何ですか? –
現在直面している問題をお知らせください。 – Manishankar
OPは自分の解決策を共有したいと思うかもしれません。この場合は、QAとして投稿する必要があります。最初の問題点を記載した質問を投稿し、質問内の問題点と解決策ではなく、提案された解決策を投稿します。 – jcaron