Обзор
У меня есть довольно интересное требование, когда мне нужно загрузить данные геоджона из службы (не службы векторных плиток), а затем кэшировать эти данные для автономного использования (с помощью indexDB). Итак, при запуске приложения в автономном режиме мне нужно загрузить эти данные из indexDB на карту (используя mapbox-gl). Объем данных, которые могут быть кэшированы в автономном режиме (в indexDB), может быть довольно большим, и поэтому я не могу просто перенести все данные в память и добавить их на карту (в этом случае mapbox будет обрабатывать все для нас внутренне, используя geojson-vt).
Я понимаю, что если бы источником была служба векторных листов, то это упростило бы задачу, но, к сожалению, на данный момент это не вариант.
Попытка решения
Я считаю, что решение этой проблемы заключается в индексации данных, когда я сохраняю их в indexDB. Я думал, что я выясню каждое из значений сетки UTM для каждого «объекта», и, таким образом, когда карта перемещается, я могу просто запросить объекты в соответствующих сетках и загрузить их в mapbox.
Пример IndexDB «Таблица»:
feature_id | properties | utm_tiles ({z}_{x}_{y})
1 ... 14_0_0, 13_1_1, 13_1_2, etc
2 ... 14_0_0, 12_100_100, 12_100_101, etc
etc...
Имея указанную выше информацию, я мог бы затем запросить select * from index_db_features, где utm_tiles in ('14_0_0', '14_0_1')
Хотя теоретически кажется, что это сработает, проблема, с которой я сталкиваюсь, состоит в том, чтобы выяснить все плитки, к которым относится данная функция. Библиотека geojson-vt , кажется, делает то, что я хочу, за исключением того, что она не дает вам фактический список всех плиток, в которых находятся объекты, - она делает наоборот, где вам нужно спроситьэто для объектов, основанных на данной плитке.
Есть ли у кого-нибудь какие-либо предложения по выяснению того, к каким плиткам относится данная функция? Или лучшее предложение для пространственной индексации данных геойсона для использования в indexDB?