とある地味なブログ

プログラミングとお絵かきに関する雑記。

iOS 10 で Google Map Script API をドラッグできない

StackOverflowにこんな質問があります。

Google Maps Javascript API Doesn't Respond to Touch Events in iOS 10 - Stack Overflow

iOS 10 で、Google Maps Javascript APIのタッチイベントが効かない。」

Google Mapにサインインしなければいいよ!という回答がついていて、ぐぐっても似たような記事が出てきますが、 サインインしなくていいんだったら最初からしねーよ。

ということで、調査しました。

Google Maps Script APIをロードする直前に、以下のスクリプトを挿入すれば改善される場合があります。

まず、クライアントがiOS10かどうかのチェックをし、iOS10であれば以下の処理をします。

iOS10では、なぜかGoogle Mapがwindow.Touchコンストラクタを使おうとしていて、 wondow.TouchコンストラクタはiOS10では実装がないらしく、初期化に失敗しています。

従って、window.Touchコンストラクタを実装して上書きします。

また、window.TouchEventがなければ、Google Mapがよしなにするという分岐がありますが、 なぜかwindow.TouchEventが実装されており(ただし中身の実装はない模様)イベントハンドリングに失敗しています。

従って、window.TouchEventnullにします。