2016-11-11 10 views
2

Исходный файл моей карты - GeoJSON, но он очень большой и очень медленный. Есть ли способ превратить это в векторные плитки на лету, используя MapBox GL JS? (Загрузите GeoJSON, предварительно обработайте файл в векторные фрагменты и покажите, как использовать базовую карту в качестве векторных плит.) Кажется, что векторные плитки намного быстрее.Преобразование GeoJSON в векторные плитки на лету с MapBox GL JS?

Я пробовал все учебники и примеры GeoJSON-VT, которые я мог бы, например, the one on MapBox's site, но он просто говорит, что GeoJSON-VT работает под капотом, так что это не очень помогает. Другие в основном применяются к Лифлету, а не к MapBox GL JS.

Между тем, каждый пример я считаю, что использует большой набор данных всегда делает это с помощью векторных плиток:

map.addSource('x', { 
     "type": "vector", 
     "url": "url" 
    }); 

Для справки, я погрузка моего файла, используя этот метод:

map.addSource('x', { 
     type: 'geojson', 
     data: 'file.geojson' 
    }); 

ответ

2

В случае ваш файл GeoJSON является статическим, вы можете использовать mapbox/tippecanoe для преобразования GeoJSON в файл .mbtiles. Затем вы можете загрузить файл в Mapbox в виде набора (about tilesets), или вы можете использовать свой собственный источник векторной плитки с веб-сервера, используя файл .mbtiles (reference implementation).

Если ваш файл GeoJSON более динамичен, все становится немного сложнее. Я никогда не использовал его, но Mapbox Dataset API может быть хорошим решением для этого.

+0

Это работает как шарм - это супер быстро. Единственная проблема заключается в том, что я нажимаю ограничение размера 500k для определенных фрагментов, поэтому он не будет поддерживать уровень детализации, который я хочу. Нужно возиться с настройками или обслуживать его через собственный сервер ... – Andrew

1

Насколько я знаю, Mapbox-GL-JS использует GeoJSON-VT для автоматического преобразования файлов GeoJSON на стороне клиента в векторные плитки в браузере - так что это уже делает то, о чем вы просите.

Если это все еще «медленно», вероятно, проблема заключается в фактической загрузке и обработке, поэтому правильный и обслуживающий векторные плитки - правильный ответ.