2016-01-28 5 views
39

Из словаря MapBox, Mapbox.jsMapBox GL JS против Mapbox.js

Mapbox.js библиотека JavaScript, которая позволяет добавить интерактивную карту на ваш сайт. Это плагин для Leaflet, и это библиотека с открытым исходным кодом, которая бесплатна для использования.

и Mapbox GL JS

MapBox GL JS библиотека JavaScript, которая использует MapBox GL для отображения интерактивных карт. Это бесплатная библиотека, которая бесплатна. Вы можете добавить стиль Mapbox или собственный стиль, созданный с помощью Mapbox Studio, в приложение Mapbox GL JS.

и от this answer

MapBox Стили предназначены для использования с MapBox GL и родной прошивкой и Android SDK,. Вы не можете использовать их с классической версией Mapbox JS. Mapbox JS поддерживает растровые фрагменты, вы не можете их стилизовать. Это просто образы. Mapbox GL и собственные SDK (могут) использовать векторные плитки, и они являются стильными.

Я считаю, что я могу использовать mapbox.js в качестве замены к leafletcss и js источников, но я могу сделать то же самое с mapbox-gl.js?
Какие еще существуют различия между двумя библиотеками?

ответ

32

Насколько я знаю, Mapbox GL JS станет заменой для текущего Mapbox JS, который использует Листовку в фоновом режиме. Многое, что делает Лифлет, GL может делать тоже и многое другое. Но не все. То же самое касается и наоборот. GL может делать то, что не может сделать Листовка. Большая вещь в GL заключается в том, что она построена вокруг векторных плит с использованием WebGL. Из статьи введения:

Объявление Mapbox GL JS - быстрая и мощная новая система для веб-карт. Mapbox GL JS - это средство визуализации на стороне клиента, поэтому он использует JavaScript и WebGL для динамического рисования данных со скоростью и гладкостью видеоигры. Вместо того, чтобы фиксировать стили и уровни масштабирования на уровне сервера, Mapbox GL запускает мощь в JavaScript, что позволяет использовать динамический стиль и интерактивность свободной формы. Векторные карты - это следующая эволюция, и мы рады видеть, что разработчики создают с этой структурой.

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

После этого вы могли бы сравнить их API,:

Одна вещь, которую следует иметь в виду, это то, что GL - это бренд, шлепающий новый, и, как мы все знаем разработчики, это связано с ценой. Некоторые изломы не были устранены. Что касается Leaflet, он очень зрелый, широко используемый и очень хорошо проверенный/проверенный. Если you'de бы взглянуть на то, что проблемы существуют в настоящее время с GL вы могли бы взглянуть на проблемы более на Github, в хранилище:

Надежда, что помогает, удачи!

+1

Поиграв немного, я хотел бы подчеркнуть, что две библиотеки несовместимы друг с другом. Например, я не могу использовать 'mapbox.js' для добавления' GeoJSON' к карте, созданной с помощью 'mapbox-gl.js' – raphael

+0

Оба совместимы с спецификацией GeoJSON? Mapbox.js с использованием GeoJSON: https://www.mapbox.com/mapbox.js/example/v1.0.0/load-geojson/ Mapbox.GL.js с использованием GeoJSON: https://www.mapbox.com/mapbox- gl-js/example/geojson-markers/Я не понимаю, что вы подразумеваете, используя mapbox.js на карте, созданной gl. Конечно, вы не можете смешивать два фреймворка, их API полностью разные. – iH8

+0

Листовка 1.0 может дать Mapbox GL за свои деньги: http://leafletjs.com/2015/07/15/leaflet-1.0-beta1-released. html –

19

ответ iH8 является большим, чтобы добавить немного больше деталей:

Для базовой карты, Mapbox.js отображает растровые плитки файлов (PNG & JPEG), и отображает их с помощью HTML & CSS. Mapbox GL JS отображает векторные фрагменты (фэнтезийные буферы протоколов) и отображает их с помощью WebGL. Он также может отображать растровые фрагменты, но это не фокус.

Оба Mapbox.js и Mapbox GL JS поддерживают накладки, такие как слои и маркеры GeoJSON. Оба являются с открытым исходным кодом, с похожими лицензиями и несколькими совместными участниками.

Стили для слоев Mapbox.js хранятся на серверах и передаются с использованием серверной технологии. Стили для Mapbox GL JS отображаются динамически в браузере, поэтому их можно изменять в реальном времени.

Листовка имеет более широкую поддержку браузера, за счет нескольких вещей, которые некоторые браузеры не могут поддерживать, например, наклон карты и вращение. Mapbox GL поддерживает браузеры, которые поддерживают WebGL и лучше всего работают на более новых компьютерах. Он имеет собственную версию, называемую Mapbox GL Native, которая отлично работает на всех мобильных телефонах.

Несмотря на названия, вы можете использовать Листовку с Mapbox и Mapbox.js и Mapbox GL с использованием не-Mapbox стилей.

+0

Из Leaflet 1.0-beta1 (14 июля 2015 г.) поддерживается [нецелое масштабирование] (https://github.com/Leaflet/Leaflet/blob/master/CHANGELOG.md#animations-improvements-and-fractional- увеличение) – Jieter

11

Как правило, Leafletjs и Mapbox.js являются одинаковыми, но с Mapbox.js с плагинами и расширениями, которые обертывают Листовку и связывают с услугами Mapbox (например, направления). Подобные плагины и функции существуют от других компаний или продуктов, и Листовка может использовать их в дополнение к или вместо Mapbox. Библиотеки, основанные на листе, обычно имеют улучшенную поддержку браузера, используют растровые плитки и т. Д. Добавлены такие функции, которые включают современные функции, такие как векторные плитки (pbf, mvt и т. Д.) И различные средства рендеринга (включая webgl).

MapBox-GL-JS и родной вариант MapBox-Г.Л. являются открытым исходным кодом библиотеки, которые являются высокая производительность, оптимизированная вокруг векторных плитки (PBF, MVT) и WebGL для рендеринга в холст элемента (для варианта -js). Это относительно новое, поэтому некоторые вещи, которые легки в Leaflet, могут быть разными или сложными (по состоянию на апрель 2016 года), что они очень похожи и работают достаточно хорошо, , в том числе на мобильных устройствах (за последние несколько лет, например айфон 5с). Примером случайной причуды является то, что ивритские ярлыки в Израиле, которые читаются справа налево, отстают и выглядят глупостями (речь идет о открытой проблеме).

Если отказаться от поддержки старого браузера в порядке, то маршрут Mapbox-gl (-js) может быть прекрасным выбором. В моем ограниченном опыте (работа с ним несколько месяцев) он обладает лучшими возможностями для пользователей и разработчиков в целом, а Mapbox является последовательным в их разработке/выходе. У меня меньше опыта с оплаченными услугами, и неясно, насколько тесно связаны их библиотеки с этими услугами. Для мобильного проекта я перешел в mapbox-gl-js после просмотра Google Maps, Leaflet v0.7 и v1, и это, похоже, было хорошим решением.

Я начал использовать Mapbox-gl-js с опытом работы с Leaflet и властью в HTML/CSS/JS и нашел the primer и examples обе полезны при понимании технических деталей. Включение способа отображения карты с помощью JSON (а не CSS). Также внимательно ознакомьтесь с условиями обслуживания, это был важный положительный отличительный признак , особенно по сравнению с Google. Услуги Mapbox не имеют наиболее надежного покрытия за пределами США, поэтому не забудьте также дать этот обзор (по моему опыту, обычно доступен другой провайдер, поэтому это не обязательно влияет на решение принять библиотеки, они просто очень тесно связан с функциями или стандартами Mapbox).

0

В настоящее время я работаю над переключением комплексной системы картографической карты на Mapbox GL, и я бы сказал, что одна заметная разница, которую я нашел, - это инструменты рисования и обработки слоев GeoJSON. В листе есть набор инструментов для рисования, которые включают нестандартные маркеры GeoJSON, прямоугольники и круги. Разработчики Mapbox GL решили сосредоточиться на родном GeoJSON, что означает, что нет никакой поддержки для рисования и рендеринга окружностей и прямоугольников (например, в Mapbox GL нет ничего подобного L.Circle); есть маркер, но он выглядит так, как будто традиционный маркер Leaflet требует создания собственных спрайтов или использования SVG. Все эти вещи все еще возможны, но они немного больше настраиваются со стороны разработчика, чем в Leaflet.

Кроме того, большинство слоев Mapbox GL визуализируются как элементы холста. Это означает, что в отличие от Leaflet нет элементов HTML, связанных с вашими различными слоями. Это затрудняет настройку элементов с помощью CSS, если это необходимо. Единственное исключение, которое я нашел здесь, - это маркеры, которые отображаются как отдельные элементы HTML.

Все сказанное, я смог почти полностью воспроизвести существующие инструменты рисования и стили рендеринга с небольшими отличиями. Если вам нужны высоко настраиваемые инструменты рисования, Mapbox GL может расстраивать вас.

Поддержка браузера упоминается как потенциальная проблема. Любой браузер, который supports WebGL может запускать Mapbox GL. Сюда входят все основные браузеры. Единственным значительным набором браузеров, который мы видели, который не поддерживал Mapbox GL, был IE10 или старше, но наши аналитики показали, что почти никто из наших пользователей не использовал эти браузеры, поэтому мы официально отказались от поддержки для них. Ваш пробег может быть разным.

В целом, я доволен коммутатором, потому что я думаю, что Mapbox GL легче работать и обеспечивает более удобную работу с пользователем.

Смежные вопросы