【Javascript】マーカークラスタが「greedy」モードのときクリックが効かない!
さいきん大島てるさんのような、グーグルマップ上に情報を表示するサイトを作っているんですが、どうもマーカーのクラスタリング処理に不具合らしきものを見つけてしまいました・・。
クラスタリング処理とは、地図上にたくさんマーカーがあるときにまとめて「〇件」みたいに一括りにして表示してくれる機能です・・。
↓
(この機能のことです)
マーカー クラスタリング | Google Maps JavaScript API | Google Developers
このひと固まりになったマーカーが、モバイル画面のときにクリックに反応しない・・。
具体的にいうと、マップを「gestureHandling: "greedy"」のモードにしたときに、マーカーをクリックしてもclickイベントが呼び出されなくなってしまうんです(greedyモードとは、指一本だけでグリグリとマップを動かせる簡易表示モードです・・)
英語で不具合の様子をググってみると、似たような現象について議論してるページがありました・・。
↓
(議論はここ)
Clicking on cluster icon in Google Chrome not working · Issue #87 · googlemaps/js-marker-clusterer · GitHub
(コードはここ、「ClusterIcon.prototype.onAdd」処理の部分です)
https://github.com/googlemaps/js-marker-clusterer/blob/gh-pages/src/markerclusterer.js
でも上記のケースは、私の場合とは微妙に現象が違うみたいです・・。
私の場合は「isDragging 」フラグがどうこうという以前に、そこに書いてある「clickイベント」自体が呼び出されていない・・。
この修正をするのはなんだかとてもめんどくさそう・・。
なのでしょうがないので、マップはgreedyモードでなくて、cooperativeモードで使うことにしました・・。
誰かうまい修正方法を知ってる方いたら教えてだしあ・・。
以上です・・。