はまったけど解決がどこにも載っていなかったので自己解決。
位置情報を取得してマップに載せるなどをしたいときに
geolocation APIを使うよね。
ってやつ。
これ、pcブラウザやiOS safariでは普通にうまくいってるのに、androidではうまくいかない現象がおきた。
どうやらnavigator.geolocation.getCurrentPositionの部分でエラーが起きているぽい。
geolocationは使えるのにnavigator.geolocation.getCurrentPositionでエラーがおきる。
謎だ・・。
迷宮だ。
いろいろ試行錯誤してみて、解決したのがこれ
enableHighAccuracyオプションをtrueで設定する
書き方はこんな感じ
navigator.geolocation.getCurrentPosition()
の3番目の引数にはオプションを設定できるんだけども、そこに何もいれていなかったらandroidでうごかなかったところ、上記のようにオプションを加えたらandroidでも表示された。
enableHighAccuracyってなに
enableHighAccuracyというのは、詳しくはしらないけど、GPSを使ってより詳細な位置情報を取得するというオプション設定だ。
その代償としてバッテリーの消耗が激しくなる。
これを使うとGPSを使うというのなら、これをfalseにするといったい何をつかって位置情報をしるの??という疑問は残るものの、 とりあえずこれでandroidも解決!
オプションについてやや詳しく書いてあるサイト
Geolocation API
ではお先に失礼します。
位置情報を取得してマップに載せるなどをしたいときに
geolocation APIを使うよね。
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(
ほげほげ
);
}
ってやつ。
これ、pcブラウザやiOS safariでは普通にうまくいってるのに、androidではうまくいかない現象がおきた。
どうやらnavigator.geolocation.getCurrentPositionの部分でエラーが起きているぽい。
geolocationは使えるのにnavigator.geolocation.getCurrentPositionでエラーがおきる。
謎だ・・。
迷宮だ。
いろいろ試行錯誤してみて、解決したのがこれ
enableHighAccuracyオプションをtrueで設定する
書き方はこんな感じ
if(navigator.geolocation){navigator.geolocation.getCurrentPosition(function (pos) {var crd = pos.coords;nowlat = crd.latitude;nowlong = crd.longitude;},function (err) {alert(err.message);},{enableHighAccuracy: true,
timeout : 5000});} else {}
navigator.geolocation.getCurrentPosition()
の3番目の引数にはオプションを設定できるんだけども、そこに何もいれていなかったらandroidでうごかなかったところ、上記のようにオプションを加えたらandroidでも表示された。
enableHighAccuracyってなに
enableHighAccuracyというのは、詳しくはしらないけど、GPSを使ってより詳細な位置情報を取得するというオプション設定だ。
その代償としてバッテリーの消耗が激しくなる。
これを使うとGPSを使うというのなら、これをfalseにするといったい何をつかって位置情報をしるの??という疑問は残るものの、 とりあえずこれでandroidも解決!
オプションについてやや詳しく書いてあるサイト
Geolocation API
ではお先に失礼します。