は、私は次のjsfiddleを持っている:Googleマップのマーカーフィルタリング
http://jsfiddle.net/inkedraskal/zeLon7cs/2/
すべてのポイントが表示されている、と自分自身でフィルタリングが正しく動作しているようだときのマップのロードあなたがわかります。 しかし、フィルタ(プロジェクトなど)をクリックするとプロジェクトのみが表示されますが、再度クリックするとマーカーはリセットされません。だけでなく、あなたがスタッフニュースをクリックし、言うならば、再びスタッフをクリックし、それから、それは文句を言わない(マーカーのみ再びニュースへの適用を示してまだ両方ニュースとスタッフに適用されるマーカーを示しの代わりに、ニュース)。
ヒントを頂ければ幸いです。
私はあなたが以下を参照してくださいよ、私のJS下部にクリック上のマーカー
<div class="filters">
<ul>
<li>
<a href="#" data-filterby="type" data-filtervalue="project">Projects</a>
</li>
<li>
<a href="#" data-filterby="type" data-filtervalue="news">News</a>
</li>
<li>
<a href="#" data-filterby="type" data-filtervalue="stuff">stuff</a>
</li>
</ul>
<ul>
<li>
<a href="#" data-filterby="date" data-filtervalue="201401">Jan</a>
</li>
<li>
<a href="#" data-filterby="date" data-filtervalue="201402">Feb</a>
</li>
<li>
<a href="#" data-filterby="date" data-filtervalue="201403">Mar</a>
</li>
</ul>
</div>
<div class="clear"></div>
リスト項目にフィルタを作成しています
で$(document).on('click', '.filters a', function (event) {
event.preventDefault();
var $target = $(event.target);
var type = $target.data('filterby');
var value = $target.data('filtervalue');
$(this).toggleClass('active');
$.each(map.markers, function() {
if (this.filter[type] && this.filter[type].indexOf(value.toString()) >= 0) {
if (this.map == null) {
this.setMap(map);
}
} else {
this.setMap(null);
}
});
});
これは素晴らしいメモです。ほんとうにありがとう。あなたは偶然に日付フィルターを追加できますか? – RMH
@RMH悪いです。今すぐそれに取り組む。 – Jaydo
@RMH答えとフィドルを更新しました。 – Jaydo