0

私はこのようなものを持っています:

CLLocationManager *locManager = [[CLLocationManager alloc] init];
locManager.delegate = self;
locManager.desiredAccuracy = kCLLocationAccuracyBest;
[locManager startUpdatingLocation];

しかし、緯度と経度のユーザーを下回る必要があります。明らかに、startUpdatingLocationのすぐ下にあるlocManager.coordinateを取得しようとするとアプリケーションがクラッシュします。

ユーザーが現在地の共有を許可し、それが見つかった後、プロセスを実行するための条件を作成するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

1

電話をかけstartUpdatingLocationた後、場所を取得するまでに時間がかかる場合があります。システムはまず、アプリで位置情報サービスが有効になっているかどうかを確認し、ユーザーに位置情報サービスを許可するように求めます。GPSハードウェアを最初にオンにする必要があります。位置が確定するまで少し時間がかかります。

したがって、UIを更新して、バックグラウンドで何かが起こっていることをユーザーに示す必要があります。UIActivityIndicatorViewビューのセットuserInteractionEnabledをNOに使用することを検討してください。また、操作をキャンセルするオプションをユーザーに提供することをお勧めします。

デリゲートでは、次の2つのメソッドを実装する必要があります。

– locationManager:didUpdateToLocation:fromLocation:
– locationManager:didFailWithError:

ここで、を削除してUIActivityIndicatorView、ユーザーインタラクションを再度有効にすることができます。成功した場合は、の座標を使用して、CLLocationManager好きなことを行うことができます。失敗した場合は、エラーアラートを表示します。

stopUpdatingLocationバッテリーを節約するために位置情報サービスが不要になったときに電話してください。

于 2012-08-01T11:11:39.633 に答える