Wi-Fiオフだと位置取得精度が悪くなる

CLLocationManagerのdesiredAccuracyの話です。Wi-Fiオフにすると位置情報精度が非常に悪くなる現象に遭遇し、よくみたらドキュメントに書いてありました。

Apple Developer Documentation

if you set the desired accuracy to kCLLocationAccuracyKilometer, the system might disable GPS and use only the Wi-Fi hardware, which would save power and still give you a greater accuracy than you requested.

desiredAccuracyがkCLLocationAccuracyKilometerの時、GPSを使わずWi-Fiだけを使うかもしれないということですね。system might disable GPSとあるので絶対にGPSを使わないということではないようです。実際、Wi-Fiオフでも位置情報は取得します。取得間隔にムラができるなど自分のアプリでは実質使えない精度でしたが・・・

というわけで、desiredAccuracyにkCLLocationAccuracyKilometerをセットする時は、ユーザーにWi-Fiをオンを推奨するアラートを出したほうがいいですね。もしくはより精度の良いkCLLocationAccuracyHundredMetersなどを使うか、ユーザーに精度を選べるようにするかですね。

ドキュメントにはkCLLocationAccuracyKilometerについてだけ書いてますが、kCLLocationAccuracyThreeKilometersも同じかと思います。