Типовое значение, сгенерированное в pbf, хранящееся на s3, визуализированное на mapbox-gl
Я работаю над этим проектом, где мне нужно сгенерировать файлы protobuf с помощью tippecanoe, сохранить их в контейнере s3 и визуализировать его с помощью mapbox-gl.
Я генерирую векторные листы, используя опцию -e для записи в папку по своему выбору, а также с помощью --no-tile-size-limit
а также --no-tile-compression
чтобы избежать какого-либо несоответствия в том, как данные ожидаются. Затем я загружаю все эти файлы в корзину s3.
Затем я пытаюсь визуализировать это, изменив код по адресу https://docs.mapbox.com/mapbox-gl-js/example/third-party/. Мой код:
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/light-v10',
zoom: 12,
center: [-77,38]
});
map.on('load', function() {
map.addLayer({
"id": "test",
"type": "circle",
"source": {
"type": "vector",
"tiles": ["<link_to_my_cloudfront>/{z}/{x}/{y}.pbf"],
"maxzoom": 11
},
"source-layer": "trees",
"paint": {
"circle-radius": 3,
"circle-color": "#000000",
"circle-stroke-width": 1
}
}
});
Я могу подтвердить из файла метаданных, сгенерированного tippecanoe, что идентификатор совпадает с тем, что у меня здесь.
Проблема в том, когда я загружаю карту. Ответы на запросы к файлам pbf равны 200 и content-type
это также application/x-protobuf
но точки просто не отображаются на карте. Я использую некоторые неправильные параметры или это просто несовместимость. Мне трудно поверить, что это последнее, потому что как tippecanoe, так и mapbox-gl разработаны mapbox, и они известны своей надежностью.
1 ответ
На ум приходят две возможности:
- Файлы обслуживаются в сжатом виде, но без правильного типа содержимого. Обычно это отображается в консоли с ошибкой, например "Неподдерживаемый тип записи 4".
- Плитки обслуживаются просто отлично, но векторный слой источника не
trees
, Вы можете использовать https://stevage.github.io/vector-inspector чтобы проверить это. Если вы опубликуете свой фактический URL, мы можем провести дальнейшую диагностику.
Вообще, размещение плиток на S3 довольно сложно, чтобы получить право. См. https://github.com/terriajs/boundary-tiles для одной конфигурации.