Mapbox не может изменить стиль векторных плиток во время выполнения
Я использую утилиту командной строки tippecanoe для создания набора векторных векторных приложений. Это создает структуру каталогов в соответствии с координатами z/x/y, что прекрасно. У меня есть определенная группа объектов (выделенных слоем), которым не нужно, чтобы z был до уровня масштабирования до 21, поэтому он создает плитки до уровня масштабирования 14. В моем случае очень важно не тратить пространство памяти, увеличив максимальное увеличение до 21 для определенного уровня функций.
Насколько я понимаю, mapbox gl-js запрашивает векторные плитки в соответствии с их координатным пространством.
Так что во время моего увеличения с 6 до 21, хотя на уровне масштабирования> 14 запросов к элементам мозаики отвечает 404, gl-js принимает ту же плитку, которая доступна на уровне 14.
Проблема в,
Например, если я нажимаю на любую функцию, мне нужно, чтобы эта функция была выделена. Я делаю это, отфильтровывая слои как:
//hiding the current layer
mapBox.setFilter(currentLayer, ["==",'gid', "_none_"]);
//showing only the clicked feature by filtering it out with a unique id it has
mapBox.setFilter(highlightedLayer, ["==",'gid', feature_gid]);
Это работает, как и ожидалось, для уровня масштабирования < 14, но если уровень масштабирования превышает 14 (максимальный масштаб при создании плитки), то он не может визуализировать плитку с применением стиля слоя, поскольку он пытается извлечь плитку, которой нет на моем сервере. Итак, мой вопрос: если исходный тайл с определенным уровнем масштабирования дает 404, то почему бы не применить стиль слоя к тому, какой тайл доступен при уровне масштабирования 14?
Любая помощь, чтобы решить эту проблему?
1 ответ
Эта функциональность не поддерживается mapbox-gl. Вам нужно вернуться к Tippecanoe и сгенерировать плитки для этого уровня масштабирования.
Обратите внимание, что эти новые плитки могут быть похожи с точки зрения данных на другие уровни масштабирования.
Помните, что плитки похожи на изображения, созданные с точным уровнем масштабирования. Если вы увеличите масштаб, одна плитка будет разделена на множество плиток.