2009-07-22 13 views
2

私は自分のアプリにMKMapViewを持っており、マップがユーザーの作業を知っているようにスピナーを表示している間にマップのshowsUserLocationをオンにするボタンがあります。 NSKeyValueObserverをマップのuserLocationプロパティに追加することで、スピナーをいつ停止するかを知っています。しかし、ユーザーが位置情報サービスを無効にした場合、スピナーは永遠に続くが、何も起こりません.MKMapViewを使用しているときにロケーションサービスが無効になっていることを知る方法はありますか?位置サービスを無効にしたユーザー位置を表示

答えて

4

locationServicesEnabledは、CLLocationManagerのブール値プロパティを使用します。

ユーザーの場所を自動的に表示するためのMapKitのサポートはかなり劣ります。私が書いているアプリはユーザーの場所を示していますが、CLLocationManagerを直接使用して、自分の注釈をマップに追加します。

+0

ありがとう、何とかそのプロパティを逃した。ユーザーが位置情報サービスを再び有効にするよう求めるプロンプトを表示したときを知るためにとにかくありますか?マップアプリケーションは、ユーザーがそのダイアログでnoを選択するまでスピンナーを表示します。 –

+1

あなたはアクセスが拒否されたことを知ることができ、いつアクセス権が与えられたかを知ることができます。私の頭の上から、didFailWithError CLLocationManagerDelegateコールバックを実装して、拒否されたら通知し、locationServicesEnabled変数にKVOウォッチを使用してYESに切り替えるかどうかを調べます。それを行うより良い方法があるかもしれませんが、それは一つの方法です。 –

0

locationServicesEnabledは4.0で新しくなっているため、展開ターゲットが低い場合は機能しません。

編集:Nevermind - クラスメソッド[CLLocationManager locationServicesEnabled]は4.0で新しく追加されました。しかし、以前のSDKのために、現在は廃止されたインスタンスプロパティー.locationServicesEnabledがあります。

関連する問題