2

アプリにCLLocationManagerのインスタンスとMKMapViewを使用しています。タップすると、Location ManagerのstartUpdatingLocationをトリガーするボタンがあります。これにより、didUpdateToLocationコールバックを介して新しい場所の更新を受信できます。精度に満足したら、これらの更新を停止します。

[locationManager stopUpdatingLocation];
locationManager.delegate = nil;

問題は、ステータスバーの右上にある矢印記号で示されているように、GPSがオンのままになっていることです。さらに調査した結果、これはmapViewにshowsUserLocation = YESがあるためであることがわかりました。これは、locationManagerの自分のインスタンスが更新を停止した場合でも、更新を受信し続けることを意味します。

更新を停止した後に以下を追加すると、GPSサインがオフになりますが、青い点は明らかに消えます(ただし、視覚化のために現在の位置をそのままにしておきます)。

mapView.showsUserLocation = NO;

私のアプリでは、CLLocationManager(特定の距離内で最も近いPOIを計算するため)とMKMapView(主にこれらのPOIを位置の周りの注釈として表示するため)の両方を使用する必要があります。両方に対するすべてのGPS更新を単純に停止し、その時点で青い点をフリーズする方法はありますか?

mapView.showsUserLocationを完全に無効にし、カスタムアノテーションとしてLocationManagerからmapViewにCLLocationを描画することを考えましたが、それが最善の方法かどうかはわかりません。何か案は?

4

1 に答える 1

1

希望の精度で位置を更新したら、注釈ピンをドロップすると、ユーザーが選択した位置を知るのに十分視覚的になると思います。これは、MKMapViewの使用法の中でかなり標準的です。

もう1つ考えておくべきことは、位置の監視を停止した後でも、位置の矢印は実際には一定期間持続します(使用法の種類によって異なります)。Appleのロケーションガイドラインでそれがどのくらい続くかを知ることができますが、同様に考慮すべきことがあります。

于 2013-02-12T01:47:52.533 に答える