Как использовать векторные плитки mapbox с высокой производительностью?
Я немного запутался в Mapbox MVT. Как я понял, тайл - это маленький кусочек карты, как в пазле.
Не совсем уверен в работе MVT.
https://docs.mapbox.com/data/tilesets/guides/vector-tiles-introduction/#benefits-of-vector-tiles
Здесь написано Vector tiles are really small, enabling global high resolution maps, fast map loads, and efficient caching.
Дело в том, что я пытаюсь получить все координаты из базы данных, которые могут достигать более чем 10K
и в настоящее время получаю данные из postgis, используя:
query = f"""
SELECT NULL AS id, ST_AsMVT(q, 'default', 4096, 'mvt_geom')
FROM (SELECT "locations"."name",
ST_AsMVTGeom(ST_Transform(locations.geom, 3857),
ST_TileEnvelope(1, 0, 0), 4096, 0, false) AS mvt_geom
FROM locations) AS q;
"""
with connection.cursor() as cursor:
cursor.execute(query)
rows = cursor.fetchall()
mvt = bytes(rows[-1][-1])
return Response(
mvt, content_type="application/vnd.mapbox-vector-tile", status=200
)
Теперь я задаюсь вопросом о проблемах с производительностью, так как каждый раз, когда пользователь будет заходить, это будет создавать нагрузку на db.
И еще одна проблема, с которой я сталкиваюсь - при использовании vector tiles
в качестве источника, он вызывает url источника и (ударяя по db) каждый раз, когда я перемещаю карту.
type: 'vector',
tiles: [
'http://url/{z}/{x}/{y}.mvt'
]
Можно ли вызвать исходный url на определенном уровне масштабирования, и до этого момента все точки остаются на карте?
например,
Mapbox calls source url at zoom level 1 and draw points on to the map and when zoom level reach 7 then mapbox again calls the source url and update the map.
Буду очень благодарен, если кто-нибудь сможет помочь.