HTML5ジオロケーションを使用して、ボタンクリックの現在の位置をユーザーに要求するモバイルWebサイトを作成しています。これはモバイルChromeで正常に機能します。ユーザーは現在地を共有するように求められ、受け入れた場合、プログラムフローは期待どおりに続行されます。ただし、モバイルSafariでは、ユーザーが現在地を共有するように求められることはなく、ブラウザはデフォルトでジオロケーションの「PERMISSION_DENIED」エラーになります。
プロンプトが表示されることはありませんが、ユーザーが現在地を共有しないことを選択したかのように動作します...
ジオロケーションコード:
function geoLocate() {
try{
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(getUserPosition, handleGeolocateErrors);
} else {
alert('your browser does not support geolocation');
}
} catch(evt) {
alert(evt);
}
}
エラー処理:
function handleGeolocateErrors(error) {
switch(error.code) {
case error.PERMISSION_DENIED: alert('User did not share location'); break;
case error.POSITION_UNAVAILABLE: alert('Unable to get position'); break;
case error.TIMEOUT: alert('Request timed out'); break;
default: alert('An error occured'); break;
}
}