はまったけど解決がどこにも載っていなかったので自己解決。

位置情報を取得してマップに載せるなどをしたいときに
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


ではお先に失礼します。