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.TouchEvent
をnull
にします。