0

Mapbox の新しい GL API は使いにくいことがわかっています。jQuery の each 関数を使用して、この奇妙な形式の配列を構築できるかどうか疑問に思っています。

マップに表示されるマーカーをフィルタリングするカテゴリのチェックボックスを含むフォームを作成しています。ループを使用して$.each()、チェックされた入力を取得し、それらの ID を取得して、各配列の中央にスローします。1 つのチェック済み入力は 1 つの配列です。

基本的に、配列を次のようにまとめる必要があります。

map.setFilter('markers', ["any",
   ['in',c1,true],
   ['in',c2,true], // these 3 arrays
   ['in',c3,true]
] );

しかし、明らかに、チェック時に動的にこれを行う必要があります。使用したい不完全なjQueryは次のとおりです。

jQuery('input.checkbox-child').change(function(){
    args = new Array();
    jQuery('input.checkbox:checked').each(function(){
        id = jQuery(this).attr('id');
        filter = ['in',id,true];
        // ???
    });
    map.setFilter('markers', ["any", args] );

});

setFilter 関数で使用する場合filterと同様に、変数を結合して配列のコンマ区切りリストを作成する方法がわかりません。['in',id,true],['in',id,true],['in',id,true]...

4

1 に答える 1

1

これはあなたが望むもののために働くべきだと思います

var args = [];
jQuery('input.checkbox-child').change(function(){
    jQuery('input.checkbox:checked').each(function(){
        var id = jQuery(this).attr('id');
        var filter = ['in',id,true];
        args.push(filter);
    });
    map.setFilter('markers', ["any"].concat(args));
});
于 2015-12-09T22:06:01.273 に答える