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}をオプションにいれてみたけど、動かない。
最終的には
を読んで、try catchを入れて、geolocationが定義されてなかったら「使えません」と謝る機能を追加した。
なぜ「geolocation」が使えないかは謎です。
あとやはり基本的な知識が足りないなぁ……反省。
コメントを残す