
現在地から検索機能が使えなくなっていた件 [Deprecation] getCurrentPosition() and watchPosition()
篠原 隆司
状況
スマホサイトで見かけることがある「現在地から検索」みたいな機能が動かなくなっていました。
次のような流れの処理です。
- 「現在地から検索」ボタンを押す
- javascript から navigator.geolocation.getCurrentPosition() を使って現在地を取得
- サーバに現在地を送信
- 現在地に近い順に検索結果を画面に表示
ボタンを押すと下記のエラーが出て現在位置の取得に失敗していました。
(index):63 [Deprecation] getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
機械翻訳
(index):63 [Deprecation] getCurrentPosition()およびwatchPosition()は、安全でない起点では動作しなくなりました。 この機能を使用するには、アプリケーションをHTTPSなどの安全な起点に切り替えることを検討する必要があります。 詳細はhttps://goo.gl/rStTGzをご覧ください。
結論
- httpで現在位置取得は禁止されたようです。
- GoogleMapの問題ではなく、ブラウザ(各種)の仕様変更のようです。
- 対策としては、httpsにするか機能を廃止するかになりそうです。
参考にした記事
https://goo.gl/rStTGz
機械翻訳
https://translate.google.co.jp/translate?sl=en&tl=ja&js=y&prev=_t&hl=ja&ie=UTF-8&u=https%3A%2F%2Fsites.google.com%2Fa%2Fchromium.org%2Fdev%2FHome%2Fchromium-security%2Fdeprecating-powerful-features-on-insecure-origins&edit-text=&act=url
位置情報を扱うということで、SSLにしろというのは分かるのですが、処理自体が止まってしまうのです。
要するに、httpでgelocation使うのはダメやで。httpsにしてねって書いてある。
gelocationをはじめとした、ローカルに強く影響を受ける強力な機能を使用する場合はSSLにしてセキュリティを強化してくださいってこと。
Webブラウザで現在地情報を正しく取得できない場合の原因と対策
2016年4月ごろからはGoogle Chrome(PC用を含む)で、また2016年9月ごろからはiOS(iPhone/iPad/iPod touch)上のブラウザやMacのSafariで、こうしたWebサービスにアクセスすると現在地の周辺地図が正しく表示されない、あるいは現在地が取得できないというエラーメッセージが表示される
Chromeで現在地の表示に失敗する現象は、不具合ではなく仕様変更によるものだ。具体的には、http接続のページから現在地を取得することが禁止されたのだ。
Safari/iOSでもバージョン10のリリース後に同様の現象が見られるようになった(iOS 10がプリインストールされているiPhone 7/7 Plusを含む)。
http接続での現在地取得を禁止するブラウザが増えている