Я пытаюсь отфильтровать географический Json слой (называемый «местами назначения») на основе набора условий. Мой слой "назначения" имеет свойство под названием uniqueID
строки типа, которое в большинстве случаев имеет только один идентификатор numeri c, но иногда имеет более одного. Я хотел бы отфильтровать этот слой (используя map.setFilter
) на основе массива идентификаторов. Фильтр должен делать что-то вроде этого: если какое-либо из значений uniqueID
в "целевом" слое обнаружено в массиве идентификаторов, то отфильтруйте эту функцию.
Вот фрагмент моих "пунктов назначения" "слой:
{ "type": "Feature", "properties": { "destinationLon": -74.20716879, "destinationLat": 40.69097357, "uniqueID": "2029" }, "geometry": { "type": "Point", "coordinates": [ -74.20716879, 40.69097357 ] } },
{ "type": "Feature", "properties": { "destinationLon": -74.20670807, "destinationLat": 40.69137214, "uniqueID": "984,985" }, "geometry": { "type": "Point", "coordinates": [ -74.20670807, 40.69137214 ] } },
{ "type": "Feature", "properties": { "destinationLon": -74.20651489, "destinationLat": 40.71887889, "uniqueID": "1393" }, "geometry": { "type": "Point", "coordinates": [ -74.20651489, 40.71887889 ] } }
А вот образец массива идентификаторов, который я мог бы использовать: [2000, 984, 1393]
Я пробовал использовать фильтр с выражением in
(документация здесь ) вот так:
let thisFilter = ["any"].concat(uniqueIDs.map(id => ["in", id, ["get", "uniqueID"]]));
map.setFilter("destinations", thisFilter);
Но я продолжаю получать это сообщение об ошибке:
Error: "layers.destinations.filter[0][2]: string, number, or boolean expected, array found"
Однако в документации указано следующее:
["in",
keyword: InputType (boolean, string, or number),
input: InputType (array or string)
]: boolean
Третий аргумент в выражении должен быть массивом. Почему тогда я получаю эту ошибку?
Есть идеи? Спасибо!