前置き
cordova-plugin-geolocationを導入して普通にGPSを利用しようとした際に動作確認で色々うまくいかなかった際のお話です。
現象
実際に起きた現象は以下です。
- Android4.4の実機で位置情報の取得に失敗した
- Androidエミュレータで位置情報の取得に失敗した
※ iOSでは問題なく確認できました。
何が行けなかったか
1. Android4.4の実機で取得できない問題
geolocationOptions
{ enableHighAccuracy: true };
currentPositionなどの関数の第3引数であるgeolocationOptionsに上記の条件でエラーが出ました。
enableHighAccuracyは使えないみたいで、falseにしたら取得できるようになりました。
2. Androidエミュレータで位置情報の取得に失敗した
エミュレータが悪いというより、擬似ロケーションのテストが失敗した話です。
AndroidManifest.xmlにパーミッションの追加
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
cordova-plugin-geolocationにはACCESS_MOCK_LOCATIONは追加されないので、手動で追加が必要です。
geolocationOptionsの変更
geolocationOptions
{ enableHighAccuracy: true };
エミュレータではenableHighAccuracyはtrueでないといけませんでした。
エミュレータで擬似ロケーションを有効にする
設定 > 開発向けオプション > 擬似ロケーションの有効
以上です。