Android デバイスの HTML5 API で Geolocation を使用しようとしています。Galaxy S LC (Galaxy S1 相当) でテストを行いました。Android のバージョンは 2.2.1 です。
それについて多くのトピックを読みましたが、まだ解決策が見つかりませんでした。
私は Geolocating のためにこの典型的なコードを使用します:
`
<script type="text/javascript">
document.write("Trying to locate you");
if(navigator.geolocation){
document.write("Geolocation is supported");
navigator.geolocation.getCurrentPosition(successCallback, errorCallback,
{
enableHighAccuracy : true,
timeout : 10000, // 10s
maximumAge : 0
}
);
function successCallback(position){
document.write("You have been located. Latitude :" + position.coords.latitude +", longitude : " + position.coords.longitude);
};
function errorCallback(error){
document.write("It didn't work");
switch(error.code){
case error.PERMISSION_DENIED:
document.write("Permission denied");
break;
case error.POSITION_UNAVAILABLE:
document.write("Position unavailable");
break;
case error.TIMEOUT:
document.write("Timeout");
break;
case error.UNKNOW_ERROR:
document.write("Unknown error");
break;
}
}
}
else{
document.write("La géolocalisation n'est pas supportée par le navigateur");
}
</script>
PC では Chrome と Opera でうまく動作します (ただし、Firefox では動作しません)。また、モバイル デバイスの Opera でも動作します。ただし、Android ブラウザでは動作しません。そのバージョンは 2.2.1 です。1. 次のメッセージが表示されます。関数 sucessCallback または errorCallback は呼び出されません。
タイムアウトを指定しない場合 (タイムアウト = 無限)、GPS が有効になっていると機能します。そうでない場合は、エラー メッセージのない空白のページも表示されます。
Android ブラウザーでこの HTML5 Geolocation テストを試しました: http://html5demos.com/geoも機能しません。
このコードを試しました(最初の回答)。時々機能しますが、位置を取得するのに 2 分待たなければなりません (コメントで述べたように)。
また、必要なすべての仕様を備えた Webview を介して取得しようとしましたが、まったく同じです。
Android ブラウザでこのバグを解決するには、 enableHighAccuracyを true に指定するだけでよいと言われていますが、GPS が有効になっていない場合は、関数 (sucessCallback または errorCallback) は呼び出されません。
誰かが解決策を持っていれば、それは私にとって大きな助けになります。
ご協力ありがとうございました。
実は空白ページは「document.write」関数が原因でした。これを innerHTML に置き換えたところ、動作するようになりました。つまり、エラーが表示され、errorCallback が呼び出されます。
ここでの問題は、Android ブラウザーが GPS (HighAccuracy) を使用してのみ位置を特定できることです。GPS が有効になっていない場合、または位置を取得できない場合 (建物内など)、位置は返されません。逆に、Opera ブラウザはリレー ネットワーク (Cell-ID 方式) を使用して位置を特定します (その場合、精度は 150m 未満です)。
Android ブラウザにセル ID ソースを強制的に使用させる方法を知っていますか?