チェックボックスの操作や地図上のマーカーの描画/消去時に、データベースから取得したリストをフィルタリングしようとして問題が発生しました。チェックボックスのアクション時にGoogleマップマーカーが削除されない
<div class="">
<label>
<input type="checkbox" class="js-switch" name="tags" value="3" onchange="filterList()" unchecked/> MRT Incidents
</label>
</div>
のonchange、私は、データベースからフェッチされたリストをフィルタリングしていますチェックボックス:
function filterList(){
var tags = document.getElementsByName('tags');
var i = 0;
{% for crisis in data %}
// code to store fields in database into local var
for(; i < tags.length; i++)
{
if(tags[i].checked) {
value = tags[i].value;
// I got 4 category 1-fire, 2-flood, 3-mrt, 4-dengue
// what I am doing here is check if the checkbox value is equal to the category ID from database, if equal, I push them into the filteredList
if(value == category){
filteredList.push({
// all the fields
});
} break;
}else{
value = tags[i].value;
if(value == category){
filteredList = [];
setMapOnAll(null);
}
}
}
{% endfor %}
addMarker(filteredList);
}
その後filteredListパラメータと私のaddMarker中:
function addMarker(filteredList){
for(var i = 0; i < filteredList.length; i++){
myLatLng = {lat: parseFloat(filteredList[i].lat), lng: parseFloat(filteredList[i].lng) };
marker = new google.maps.Marker({
position: myLatLng,
map: map,
clickable: true
});
}
ここではHTMLでの私のチェックボックスの宣言があります私の作図は変わった。複数のボックスをチェックしようとすると、最初のボックスをチェックしたとしましょう。その後、私は第2のチェックを進めます。プロットしませんが、最初のチェックボックスをオフにしてからプロットするだけです。
チェックボックスをオフにすると、マップ上のマーカーは削除されません。代わりに、それはちょうどそこにとどまり、数回チェック/チェックを外すとますます積み重なります。
なぜそうですか?前もって感謝します!
ありがとうございます! – guest176969
私のjsfiddleの例では、イベント処理にjQueryを使用しています。 –
こんにちは、クラスタマップを追加する方法はありますか?この行を追加した後:var markerCluster = new MarkerClusterer(map、g_markers、 {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});それは私にコンソールで多くのエラーを与えた – guest176969