Фильтрация листовок прерывается с помощью indexOf() или search().Jquery

Программирование на jquery
Ответить
Anonymous
 Фильтрация листовок прерывается с помощью indexOf() или search().

Сообщение Anonymous »

У меня есть карта с множеством маркеров, импортированных из GeoJSON через AJAX, и я не могу настроить фильтрацию.
Здесь 3 флажка, и можно установить любую их комбинацию. . Каждый маркер имеет свойство, называемое «типы», которое может содержать любую комбинацию из трех значений (это карта магазинов, в которых могут быть безалкогольные напитки, ложки и/или молочные коктейли, поэтому «мягкий коктейль с ложкой», «мягкая ложка», « мягкое встряхивание", "встряхивание совком", "совок", "встряхивание").
  • Поэтому сначала я проверяю, какие значения проверяются, и добавляю их в строку .
  • Затем я проверяю, не отмечен ли ни один из них, и если да, то все маркеры должны быть показаны.
  • Затем я проверяю, имеет ли маркер все 3 значения в в этом случае он всегда должен отображаться (поскольку он соответствует всем значениям).
  • Наконец, я проверяю, находятся ли определенные выбранные значения на маркере. Он работает нормально, если он точно такой же, но если вариант 3 является единственным выбранным значением, а маркер имеет оба варианта 2 и 3, он все равно должен отображаться.
Первая строка с == работает нормально, но как только я пробую что-то в стиле indexOf() или search(), все ломается и вообще ничего не загружается.< /p>
Я тоже пробовал работать с массивами, но раздел фильтров в Leaflet не совсем хорошо описан, и JavaScript не является моим «родным языком».
var geojsonLayer = new L.GeoJSON.AJAX("data/map.geojson", {
pointToLayer: pointToLayer,
filter: icefilter
});

function icefilter(json) {
var icetypeFilter = "";
var cond1 = true;

$("input[name=icetype]").each(function () {
if (this.checked) {
icetypeFilter = icetypeFilter + " " + this.value;
}
});
var att = json.properties.types;
if (icetypeFilter.length == 0) {
cond1 = true;
} else if (att == " soft scoop shake") {
cond1 = true;
} else {
cond1 = att == icetypeFilter; //Works fine with this one
//cond1 = att.indexOf(icetypeFilter) >= 0; //The moment I activate this line and remove the one above everything is broken and no markers are shown - even with no filters selected.
}
return cond1;
}

$("input[name=icetype]").click(function () {
clusterLayer.clearLayers();
geojsonLayer.refresh();
locationList();
});


Подробнее здесь: https://stackoverflow.com/questions/789 ... -or-search
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»