質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Q&A

解決済

1回答

5221閲覧

GoogleMapAPIでMarkerClustererを利用した時のマーカークリックについて

ssk

総合スコア332

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

0グッド

0クリップ

投稿2017/04/02 08:44

#####現状のコード
https://jsfiddle.net/Jq7LxKdg/htf33xoz/3/

#####説明
MarkerClustererを利用して同一の緯度・軽度の場合はまとめることはできました。
最終的には、以下のように数字アイコンをクリックした時にその数字アイコンに紐づくコンテンツを表示したいです。
調べたのですが、情報に辿り着けず、、、実装方法がイメージでないです。

何か良い方法はないでしょうか?

よろしくお願いいたします。
![イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

https://jsfiddle.net/htf33xoz/8/

変更した点はこちら。

javascript

1Yucho.jsonData.jsonDataList.forEach(function (place,i) { 2 var latlng = new google.maps.LatLng(place.lat,place.lng); 3 var marker = new google.maps.Marker({ 4 position: latlng, 5 map: Yucho.map, 6 flat: true, 7 title: String(i), 8 }); 9 Yucho.markerArr.push(marker); 10 11//... 12}); 13

javascript

1// MarkerClusterer ライブラリの実行し、クラスタリングします 2var markerCluster = new MarkerClusterer(Yucho.map, Yucho.markerArr, {imagePath: 'https://googlemaps.github.io/js-marker-clusterer/images/m', zoomOnClick:false,});

追加したのがこちら

javascript

1google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) { 2 console.log(cluster); 3 cluster.markers_.forEach(function(e){ 4 console.log(e.title); 5 }); 6});

簡単に解説しますと、オプションのzoomOnClickを偽にすると、クリックした時のズーム動作をなくします。
そして、clusterclickというカスタムイベントがあるのでそれを拾い、コールバックで渡されるクラスタオブジェクトのmarkers_プロパティがそのクラスタに含まれるマーカー配列を持っています。
あとは、マーカーオブジェクトに色々持たせれば色々できるんじゃないかと。

投稿2017/04/03 11:27

Lhankor_Mhy

総合スコア36136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssk

2017/04/04 02:49

助かりました><ありがとうございます。 実装することができました。 最後に、、、 idleした時にマーカーは削除(リセット)できるのですが、MarkerClustererをリレットする場合はどこにどのように記述すれば良いでしょうか? 以下の参考URLのようにすると表示されなくなってしまいます。 http://stackoverflow.com/questions/4060241/how-to-show-hide-a-markercluster-in-google-maps-v3 現状 idleすると数字アイコン(MarkerClusterer)が二重で表示されてしまいます。
ssk

2017/04/04 04:58

↑上記のコメントは無視してください。削除リクエストしています。 空のオブジェクトmarkerClusterer:{}を用意 Yucho.refleshMapの関数の中で //クラスタラーの削除 if(Yucho.markerClusterer && Array.isArray(Yucho.markerClusterer.markers_)){ Yucho.markerClusterer.clearMarkers(); } とするとクラスターの削除ができました。 他に良い判定方法がありましたら、教えていただけると助かります。 MarkerClustererの前にYucho.markerArr.push(marker);としているため idleした時にmarkerが一瞬表示されてしまいます、、
Lhankor_Mhy

2017/04/04 08:05

そもそもMarkerClustererを使っているならマーカーの再描画はしないように調整すべきかと思います。 もしどうしても再描画したいならredraw()でいいかと思います。
ssk

2017/04/06 01:49

ありがとうございます。 再描画をしているpushを調整して実現いたします。 とても助かりました><
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問