geolocationで現在地が取得できずに困っていました。

大きな原因からいって「SSLの環境下でないと現在地を使わせないOSが増えてきた」「なぜかgeolocationが定義されてないっぽい」でした。

1.GooglechromeやiOSのブラウザ、Macのsafariでhttp接続のページから現在地を取得を禁止する仕様に変わってきた

今までは「位置情報取得をon」や「ブラウザが位置情報取得を許可しているか」などを確認してもらっていたけど、そういうの関係なく「禁止」になっている。

Webブラウザで現在地情報を正しく取得できない場合の原因と対策 (参考記事)

iOSはバージョン10以降(iPhone7はプリインストール)

2.geolocationが定義されていないっぽい?

alertとかを加えて、javascriptが動いているか、どこで動かなくなるかを検証していたところ、どうもgeolocation自体が動いてないっぽい。

navigator.geolocation.getCurrentPosition から navigator.geolocation.watchPositionに変えてみたりしたけど動かない。

Android で現在地を Geolocation API で取得できないとき (参考記事)

を参考に{enableHighAccuracy: true}をオプションにいれてみたけど、動かない。

最終的には

第3回 位置情報を取得してみよう(後編)(参考記事)

を読んで、try catchを入れて、geolocationが定義されてなかったら「使えません」と謝る機能を追加した。

なぜ「geolocation」が使えないかは謎です。

 

あとやはり基本的な知識が足りないなぁ……反省。

Geolocation の利用