Geolocation APIを利用して現在位置情報を取得する下記のようなサンプルコードを書き、
手持ちの端末で動作確認を行いました。
JavaScript
1function error(err) { 2 switch(err.code) { 3 case 1: 4 // 位置情報を利用する権限が無い場合 5 alert('権限なし(code:' + err.code + ')'); 6 break; 7 case 2: 8 // 電波状況等により位置情報が取得できなかった場合 9 alert('位置情報取得失敗(code:' + err.code + ')'); 10 break; 11 case 3: 12 // 位置情報取得に時間がかかり過ぎて接続がタイムアウトした場合 13 alert('タイムアウト(code:' + err.code + ')'); 14 break; 15 default: 16 // 上記以外の原因不明エラー 17 alert('原因不明(code:' + err.code + ')'); 18 } 19}; 20 21//現在地取得 22if (navigator.geolocation) { 23 // Geolocation APIに対応している端末 24 navigator.geolocation.getCurrentPosition(function(position){ 25 alert(position.coords.latitude + ', ' + position.coords.longitude); 26 },error); 27} else { 28 // Geolocation APIに対応していない端末 29 alert('位置情報サービス非対応'); 30}
###■確認対象OS(とブラウザ)
1.iOS 7.0.2(safari、chrome)
2.iOS 8.4.1(safari、chrome)
3.Andoroid 4.1.2(デフォルトブラウザ、chrome)
4.Andoroid 4.4.2(デフォルトブラウザ、chrome)
###■確認結果
1.(safari、chrome共に同じ結果)
位置情報サービスON…緯度経度が取得できた
位置情報サービスOFF…アラート"権限なし(code:1)"
2.(safari、chrome共に同じ結果)
位置情報サービスON…緯度経度が取得できた
位置情報サービスOFF…アラート"権限なし(code:1)"
・デフォルトブラウザ
位置情報サービスON…緯度経度が取得できた
位置情報サービスOFF…アラート"位置情報取得失敗(code:2)"
・chrome
位置情報サービスON…緯度経度が取得できた
位置情報サービスOFF…アラート"権限なし(code:1)"
・デフォルトブラウザ
位置情報サービスON…緯度経度が取得できた
位置情報サービスOFF…アラート"位置情報取得失敗(code:2)"
・chrome
位置情報サービスON…緯度経度が取得できた
位置情報サービスOFF…アラート"権限なし(code:1)"
Androidのデフォルトブラウザのみ返すエラーコードが想定と異なり、不思議に思っています。
何故、**権限なし(エラーコード:1)**が返ってこないのでしょうか?
Androidでは「設定」→「位置情報サービス」→「OFF」で位置情報サービスをOFFにしています。
iOSでは「設定」→「プライバシー」→「位置情報サービス」→対象のアプリを選択→「許可しない」で位置情報サービスをOFFにしています。
何かご存知の方いらっしゃいましたら、よろしくお願い致します。
あなたの回答
tips
プレビュー