現在地から検索機能が使えなくなっていた件 [Deprecation] getCurrentPosition() and watchPosition()

状況

スマホサイトで見かけることがある「現在地から検索」みたいな機能が動かなくなっていました。

次のような流れの処理です。

  1. 「現在地から検索」ボタンを押す
  2. javascript から navigator.geolocation.getCurrentPosition()  を使って現在地を取得
  3. サーバに現在地を送信
  4. 現在地に近い順に検索結果を画面に表示

ボタンを押すと下記のエラーが出て現在位置の取得に失敗していました。

(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

W3Q Archive

位置情報を扱うということで、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接続での現在地取得を禁止するブラウザが増えている