よろしくお願い致します。
やりたいこと
Google Maps APIを使用し、複数のマーカーの色分けをして設置しており(3種類)、それらのマーカーをピンの色ごとにフィルター(絞り込み)できる機能の実装を考えております。
具体的には、色ごとのボタンを設置し、ボタンを押すとその色のマーカーが消えるようにしたいです。
現在の状態
複数のマーカーを色分けして、ピンを立てるところまでは完成しております。
その後、ボタンを設置し、表示しているマーカーのフィルター(絞り込み)を行いたいと思っておりますが、どうやってコードを書けば良いかわからない状態です。(何度か試しましたが意図した動作になりませんでした。)
調べたところnew google.maps.Markerにcategoryのオプションを追加し、実際に実装をされている方の情報を確認したのですが、自分のコードの場合、どうやって適用をさせたらいいかわかりません。
http://cly7796.net/wp/javascript/switch-markers-displayed-by-google-maps-api/
現状のコード(JS)
var map; var marker = []; var data = []; var infoWindow = []; function initMap() { map = new google.maps.Map(document.getElementById('map'), { center: {lat: 70.846193, lng: 135.617413} , zoom: 12 }); var labels = ''; var data = [ {name: 'りんご', id:'1', icons:'http://maps.google.co.jp/mapfiles/ms/icons/red-dot.png', ...}, {name: 'みかん', id:'2', icons:'http://maps.google.co.jp/mapfiles/ms/icons/blue-dot.png', ...}, {name: 'なし', id:'3', icons:'http://maps.google.co.jp/mapfiles/ms/icons/ltblue-dot.png', ...}, {name: 'りんご2', id:'1', icons:'http://maps.google.co.jp/mapfiles/ms/icons/red-dot.png', ...}, {name: 'みかん2', id:'2', icons:'http://maps.google.co.jp/mapfiles/ms/icons/blue-dot.png', ...}, {name: 'なし2', id:'3', icons:'http://maps.google.co.jp/mapfiles/ms/icons/ltblue-dot.png', ...} ] for (var i = 0; i < data.length; i++) { markerLatLng = {lat: data[i]['lat'], lng: data[i]['lng']}; marker[i] = new google.maps.Marker({ position: markerLatLng, map: map, title:data.name[i], label: labels[i % labels.length], icon: data.icons[i], category: data.id[i] }); infoWindow[i] = new google.maps.InfoWindow({ content: '' }); markerEvent(i); // マーカーにクリックイベントを追加 } }); } function markerEvent(i) { marker[i].addListener('click', function() { // マーカーをクリックしたとき infoWindow[i].open(map, marker[i]); // 吹き出しの表示 }); }
知りたいこと
・categoryのオプションを追加した場合のコードの記載方法(jsとhtml)を教えていただきたいです。
・仮にcategoryのオプションを使わない場合、どのような方法であればマーカーのフィルターができるか。
→ マーカー自体にidなどが付与できればjqueryなどで要素を非表示にできるのではと思いましたが、マーカーはnew google.maps.Markerで動的に生成される為、どうやって各マーカーにid属性を付与したらわかりません。
よろしくお願い致します。
あなたの回答
tips
プレビュー