Фильтровать объекты по свойству, которое является списком объектов в Mapbox - PullRequest
1 голос
/ 11 ноября 2019

Я работаю над фильтрацией в моей карте mapbox-gl-js. У меня есть функция, которая выглядит примерно так:

[
    {
        "latitude": 1.0,
        "longitude": 1.0,
        "name": null,
        "description": null,
        "id": 3,
        "mappings": [
            {
                "type": "A",
                "mode": [
                    "1",
                    "2",
                    "3"
                ]
            },
            {
                "type": "B",
                "mode": [
                    "2",
                    "1",
                    "5"
                ]
            }
        ]
    }
]

Теперь я хотел бы создать фильтр, который показывает только объекты, которые имеют тип = A И режим = 1. Является ли такая сложная фильтрациявозможно? Я борюсь с такими выражениями:

this.map.setFilter('points2', ['==', ['get', 'type', ['object', ['get', 'mappings']]], 'A']));

, но это, кажется, не имеет смысла.

Я также пытался манипулировать данными из бэкэнда и создал следующий geoJson:

[
    {
        "latitude": 1.0,
        "longitude": 1.0,
        "name": null,
        "description": null,
        "id": 3,
        "mappings": {
            "A": [
                "1",
                "2",
                "3"
            ],
            "B": [
                "3",
                "2",
                "1"
            ]
        }
    }
]

Это выглядит немного проще, чем в предыдущем json, но я не могу написать надлежащие фильтры, потому что документация даже не говорит ни слова о таких случаях, насколько я видел. Я также добавил тег Leafletjs к этому вопросу, потому что, возможно, в библиотеке листовок есть хорошее решение для этого.

Cheers

1 Ответ

0 голосов
/ 12 ноября 2019

Один из создателей Mapbox ответил на мой вопрос: https://github.com/mapbox/mapbox-gl-js/issues/8963.

...