アプリに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を描画することを考えましたが、それが最善の方法かどうかはわかりません。何か案は?