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. Firebaseで一度だけデータを取得する
- 5. 文から一度だけ値を得る方法
- 6. キューから一度だけメッセージを読み取る方法
- 7. iOSのiPodライブラリで曲のファイルの場所を取得する方法
- 8. RabbitMQは一度だけキューからメッセージ数を取得する
- 9. 配列の要素を一度だけ取得する
- 10. JQuery Mobile pageinitでスクリプトを一度だけ実行する方法
- 11. ウィンドウをJavaで一度だけ表示する方法Timer
- 12. avafスキーマをカフカで一度だけ送信する方法
- 13. placenameだけを取得する方法もlanと緯度のアドレスです
- 14. CLLocationManagerで場所を取得する頻度が低い
- 15. gpsの場所を一度5分間アンドロイドに取得するには?
- 16. スウィフトで一度だけジャンプする方法は?
- 17. GPS Android - 一度だけ測位を取得
- 18. 家の中でAndroid GPSの場所を取得する方法
- 19. アンドロイドリストビューで場所を取得する最善の方法
- 20. revelで現在のファイルの場所を取得する方法
- 21. Twitter検索APIでツイートの場所を取得する方法
- 22. asp.netで現在のユーザーの場所を取得する方法
- 23. Androidでユーザーのホーム/仕事場所を取得する方法
- 24. JBossで現在のEARの場所を取得する方法
- 25. Googleマップで場所を保存して取得する方法
- 26. googlemapで最後の場所を取得する方法は?
- 27. UITouchの場所でUIViewオブジェクトを取得する方法 - (void)touchesEnded:withEvent :?
- 28. intentServiceでデバイスの場所を取得する方法は?
- 29. アンドロイドでセルタワーの場所を取得する方法
- 30. SMSでGPSの場所を取得する方法
あなたの問題は何ですか? –
現在直面している問題をお知らせください。 – Manishankar
OPは自分の解決策を共有したいと思うかもしれません。この場合は、QAとして投稿する必要があります。最初の問題点を記載した質問を投稿し、質問内の問題点と解決策ではなく、提案された解決策を投稿します。 – jcaron