Сравнивая различные библиотеки отображения JavaScript?

138

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

Это ссылки на сравнения доступных библиотек:

введите описание изображения здесь

Список библиотек на данный момент:

  • Карты Гугл
  • Microsoft Virtual Earth
  • MapQuest
  • Брошюра - «Комментарии поменьше, быстрее, новее и понятнее, также могут быть прочитаны как менее функциональные и менее проверенные». -География (см. Ниже)
  • ArcGIS API for JavaScript - лучше всего работает с ArcGIS Server (см. Ниже). Также доступны расширения карт Google и Bing , позволяющие использовать ESRI API с картами Google / Bing (хотя это верно для большинства библиотек).
  • Yahoo Map API
  • Виа Мишлен
  • OpenLayers - Обширная документация и хороший набор функций, а также возможность использования различных поставщиков карт.
  • MapQuery - MapQuery был выпущен и теперь имеет некоторую полезную документацию. У него очень стоящая цель - объединить OpenLayers и jQuery. Если вы особенно заинтересованы в идее OpenLayers + jQuery или хотите внести свой вклад в JavaScript Mapping Library, тогда принимайте участие и вкладывайте свои усилия. Однако, если вы просто хотите быть конечным пользователем или новичком в этой области, это может быть не для вас.
  • Mapstraction - упрощает работу , особенно при работе с несколькими поставщиками базовых карт . Однако, это все еще в стадии разработки, и местам не хватает функциональности, как и документации. (Например, «Объект GeoJSON с типом« FeatureCollection »является объектом коллекции объектов.» Не очень информативный.) Похоже, он все еще активно разрабатывается, но по состоянию на 04.04.11 в Github не было коммитов. с января.
  • deCarta - имеет мобильный и настольный javascript - первый совместим с HTML5 / CSS3, а второй - с большей совместимостью с браузерами. Исходный код предоставлен. Дружественные условия разработчика для коммерческого API. Вы можете маркировать карту, и есть несколько различных стилей карты. Вы можете выбрать данные NAVTEQ или OSM. У них также есть несколько мобильных API-интерфейсов. - под редакцией TheSteve0 - сотрудник deCarta
  • CloudMade
  • Polymaps - позволяет легко комбинировать растровые и векторные данные из разных источников. Позволяет легко добавлять собственные цвета, группировки и взаимодействие. Работает быстро, хорошо справляется с загрузкой фоновой плитки и составляет всего 30k Javascript. Один потенциальный недостаток: он использует SVG, что означает, что он не работает и не будет работать в MSIE 7 или 8. Он прекрасно работает в любом другом браузере и должен работать в IE9
  • Jump - jump - это легковесная библиотека карт, которая работает сама по себе, то есть она не является оболочкой для OpenLayers или GoogleMaps API. В настоящее время он находится в стадии разработки, но многие важные функции работают хорошо.
  • ModestMaps - еще одна меньшая, более быстрая и новая библиотека отображений JS от создателей Mapbox и TileMill.
  • Mapiator

OpenLayers - это тот, который я сейчас использую. С этим можно многое сделать, и он поддерживает большинство типов данных. Однако это не самое лучшее для всего. Например, Leaflet выглядит более гладким во многих отношениях, с выцветанием изображения и другими визуальными изменениями. Если вы знакомы с jQuery, вы можете попробовать MapQuery, который похож на комбинацию jQuery и OpenLayers.

Mr_Chimp
источник

Ответы:

93

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


Для не-ГИС фоновых разработчиков, создающих однофункциональные картографические приложения - я, вероятно, рекомендую Leaflet (теперь поддерживается MapBox). Простой в использовании и маленький. Больше функциональности зависит от плагинов различного качества и поддержки.

ГИС-приложение онлайн-типа - используйте OpenLayers3 - имеет полный набор источников данных, элементов управления и т. Д. В одной библиотеке. Его также можно использовать для простых картографических приложений, поэтому, если у вас есть микс, я бы использовал это для всего.

У Google все еще есть комбинация библиотеки / данных (например, StreetView больше нигде не доступен).

У Esri есть разработчики веб-приложений с графическим интерфейсом, и, как отмечалось ниже, зачем усложнять ситуацию, если вы уже используете их стек.

Коммерческие API (Google, Bing, Yahoo)

Использование любого коммерческого API оставляет вас в зависимости от любых изменений, которые провайдер вносит в API или Условия обслуживания. Что произойдет, например, если вдруг на вашем портале местного самоуправления, использующем Карты Google, внезапно появятся объявления ? Хотите повторно использовать код JavaScript Google Maps для сайта в интрасети? Вам придется заплатить лицензионный сбор в размере 10 000 долларов.

У Microsoft часто есть более определенные и фиксированные условия для своих услуг (при оплате), поэтому здесь риск может быть меньше.

Недавняя реакция на Twitter - хороший пример того, как разработчики изменили API. Если вы не платите за услугу, то вы (или ваша система) продаются.

Google начал взимать плату за использование своих карт с октября 2011 года.

Esri

Как уже упоминали другие, если вы используете стек Esri, то, несомненно, ArcGIS API for JavaScript будет хорошо работать поверх него. Исходя из ГИС-опыта, Esri, вероятно, больше думал о традиционных задачах и функциях ГИС, чем о неогеографических веб-гигантах (хотя это всего лишь мнение / чувство).

OpenLayers имеет встроенную поддержку слоев ArcGIS REST , и если вы хотите повторно использовать свой код для веб-сайтов, не основанных на ESRI, то снова открытый API вам подойдет.

Использовать OpenLayers ...

Я не могу понять, почему разработчики используют API, отличный от OpenLayers. Открытые проекты Источник привести к сопутствующим проектов Open Source , так что есть богатство повторно используемых компонентов там , таких как библиотеки GeoExt , MapQuery и GeoPrisma .

Я просто добавлю, что только потому, что проект с открытым исходным кодом автоматически не делает его лучше, чем коммерческие эквиваленты, - но в этом случае API OpenLayers соответствует коммерческой конкуренции, а также способности видеть, как работает источник, модульные тесты, Сценарии сборки и т. д. означают, что вы можете легко создавать новые функции поверх него.

В последнее время критика OpenLayers была в основном связана со сложностью, стилем и размером. Там были встречные аргументы, чтобы они здесь и здесь Кристофер Шмидт , один из ведущих разработчиков OpenLayers.

Стоит отметить , что если вам нужен простой Open Source отображение API , то посмотрите на CloudMade в листовке .

Комментарий меньше, быстрее, новее и проще, также можно прочитать как меньше функций и меньше проверено.

Сканирование документации API для Leaflet и OpenLayers . Последний включает в себя такие элементы, как слои WFS, инструменты редактирования и поддержка SLD. Он также был протестирован во многих различных средах и работает в IE6 (что позволяет пользователям из государственных и местных органов власти).

Для более простого отображения пространственных данных Leaflet выглядит идеально, и его легче начать. Однако я буду придерживаться OpenLayers для более многофункциональных ГИС-приложений.

Предостережения

Одним из возможных недостатков является то, что в системах коммерческих провайдеров часто появляются новые инновации, однако они почти всегда вовлекаются в OpenLayers.

Наконец, я уверен, что есть определенные сценарии, в которых другие API более подходят - на настраиваемом оборудовании, чтобы соответствовать другим ИТ-системам организации, или если вы уже знаете API наизнанку и можете разработать систему в два раза быстрее ,

Все API, которые вы упомянули, способны создавать великолепные системы онлайн-картографирования, но ваш выбор должен также соответствовать вашим потребностям развития вашей компании в будущем.

география
источник
50

На фронте картирования javascript появился новый игрок - Leaflet . Разработано CloudMade по лицензии BSD.

Выглядит действительно многообещающе.

введите описание изображения здесь

( Источник )

radek
источник
3
Ух ты, кажется, это впечатляющая библиотека. Я удивлен, что не знал об этом.
Дкрой
2
Вот сравнение листовки и поведения навигации openlayers.
дкрой
2
Хорошая блок-схема. Листовка действительно хороша.
Mr_Chimp
7
После попытки использовать Leaflet для более сложных вещей, я должен признать, что он довольно ограничен по сравнению с OpenLayers или GeoExt. Это очень легко настроить и выглядит очень красиво, но есть предел тому, что вы можете сделать с точки зрения взаимодействия. Опять же, у каждого есть свое место.
Mr_Chimp
3
Обновленная копия диаграммы (с января 2012 года) доступна по адресу: geotux.tuxfamily.org/index.php/en/geo-blogs/item/…
Will.
35

У меня был проект Google Maps / arcgis api, и около года назад я решил попробовать OpenLayers. Чем больше я работал с ним, тем больше он мне нравился, поэтому я решил мигрировать. Я сокращал 30 - 100 строк кода Google на 1-3 строки снова и снова по всему коду. Просто потому, что у OpenLayers были функции для того, что я хотел сделать, и ему пришлось вручную кодировать это для карт Google.

CaptDragon
источник
2
Все хорошо. Спасибо за ваш вклад! Я не уверен, что есть правильный ответ на это, поэтому мнения и анекдоты полезны.
Mr_Chimp
2
+1 Я бы всегда выбирал OpenLayers вместо Google Maps, если задача состоит в том, чтобы отображать больше, чем руку, полную маркеров.
Подземье
20

CartoDB - это инструмент для анализа, визуализации и обмена вашими геопространственными данными в PostGIS. Этоплатформа геопространственных баз данныхс открытым исходным кодом, предоставляющая уровень SQL API. Это позволяет разработчикам отправлять запросы в облачную базу данных PostrgreSQL + OpenGIS, оптимизированную для геопространственных целей.

введите описание изображения здесь

Arturo Herrero
источник
16

VMX клон из Mapquery кажется особенно активным.

Симо
источник
+1 для MapQuery (OpenLayers + JQuery)
география
OpenLayers + jQuery звучит идеально! Есть ли документация для этого?
Mr_Chimp
@Mr_Chimp> из того, что я знаю, еще нет документации. Просто плохая вики ( gitorious.org/mapquery/pages ) и список рассылки: osgeo.org/mailman/listinfo/mapquery
simo
12

Я сравниваю (с основными моментами и примечаниями) код, необходимый для выполнения простой, конкретной и распространенной задачи:

  • MapQuest
  • Карты Гугл
  • Бинг
  • Ови
  • Esri
  • OpenLayers
  • JQuery Geo

здесь: http://trippingthebits.com/geopres/

Этот пост предназначен для презентации, которую я дал на jQuery Geo, которая, к сожалению, отсутствует в вашем списке.

ryanttb
источник
Это хорошая статья. Мне нравится ваша цветовая кодировка! Очень хорошая идея.
Mr_Chimp
jQuery Geo FTW!
Самер
1
Спасибо @SameerAlibhai! Следите за обновлениями, мы скоро опубликуем Release Candidate 1.
ryanttb
11

Если вы хотите визуализировать глобус в браузере, то Цезий хорош. (Работает без плагина, но браузер нуждается в поддержке WebGL)

Может отображать 3D, 2D и 2,5D вид

Цезий поддерживает 3D, 2D и 2.5D

Поддержка различных растровых / векторных форматов (KML и т. Д.)

Поддержка различных растровых / векторных данных

Бесплатное управление камерой и камерой полетов

Управлять камерой

... и все в (современных) браузерах.

Beachwalker
источник
2
вау, это действительно очень хороший проект! :)
Кристиан
1
Хорошо, но тогда вы можете объяснить нам, почему Cesium не поддерживает (и многие другие) стандартный WFS (Web Feature Service)? Мне кажется, это очень мощный зритель, но вовсе не ГИС.
предприниматель веб-ГИС
11

Я не компетентен для полного сравнения, но я сделал три разных небольших проекта с Polymaps и могу прокомментировать это. Его главная сила в том, что он позволяет легко комбинировать растровые и векторные данные из разных источников. Он может удовлетворить все ваши требования, в частности, позволяет вам легко добавлять свои цвета, группировки и взаимодействия. Polymaps также довольно эффективен: он работает быстро, хорошо справляется с загрузкой фоновых плиток, и это всего лишь 30 Кб Javascript.

Основной недостаток Polymaps заключается в том, что он использует SVG, что означает, что он не работает и не будет работать в MSIE 7 или 8. Он прекрасно работает в любом другом браузере и должен работать в IE9, но я не уверен, насколько хорошо он протестирован. SVG также является преимуществом: его легко программировать, а рендеринг выглядит великолепно, особенно с малым шагом масштабирования векторных и растровых объектов.

Одно предостережение о библиотеках: если вы хотите использовать растровые плитки Google в качестве базовой карты, вы должны использовать их библиотеки Javascript. OpenStreetMap и т. Д. Имеют гораздо больше разрешающих лицензий, которые позволяют выбирать библиотеки.

(Этот ответ с 2011 года, и многое изменилось. Polymaps больше не поддерживается. На данный момент Leaflet является предпочтительной библиотекой с открытым исходным кодом.)

нельсон
источник
4
Просто обновление моего ответа; Polymaps не развивался в течение нескольких лет. Это все еще интересная библиотека с некоторыми уникальными способностями, но я бы не стал использовать ее для нового проекта. В эти дни я использую Leaflet.
Нельсон
9

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

northlandiguana
источник
(+1) Спасибо за ваш вклад - добро пожаловать в наше сообщество!
whuber
7

Mapfluence от Urban Mapping также находится в смеси. Хостинговая картографическая платформа, которая предлагает веб-геосервисы, доступные RESTful и с JavaScript (улучшенные документы / учебники в пути) API. Или OL, если хотите. Мы отображаем собственные базовые листы , располагаем обширным каталогом данных по запросу и поддерживаем данные и другие запросы визуализации.

Посетите веб-семинар О'Рейли на веб-сайте о геосервисах + большие данные, чтобы получить представление о том, что такое гео.

user2566
источник
7

Вы также можете взглянуть на Geomajas . Это ГИС-инфраструктура, написанная на Java (включая клиент Java, использующий GWT). Тем не менее, в настоящее время существует плагин для предоставления полного клиентского API в JavaScript. Пока не совсем стабильно, но стоит посмотреть. Преимущество использования Geomajas - это тесная интеграция между сервером и клиентом, которая имеет несколько преимуществ, в том числе возможность легко перенести работу на сервер и добавлена ​​специально для обеспечения безопасности.

Йоахим Ван дер Аувера
источник
6

Я бы порекомендовал ammap: http://www.ammap.com Раньше у них были флэш-карты, но недавно были представлены карты JavaScript с множеством замечательных функций.

ZeroIn
источник
4

Если вы ищете библиотеку визуализации данных, посмотрите Highmaps от людей, стоящих за Highcharts (включая меня - в настоящее время работаю разработчиком программного обеспечения). Это бесплатно для некоммерческого использования, прекрасно работает с мобильными браузерами (полная поддержка касаний) и старым IE вплоть до IE6. Поддерживает расширенные динамические функции, такие как детализация и расширенные подсказки.

введите описание изображения здесь введите описание изображения здесь

оборота Ойстейн
источник
1
Достаточно справедливо, отредактировано.
Ойстейн
3

Можно найти интересную методологию для сравнения функций, которые вы хотите использовать в библиотеках отображения JavaScript (не ограничиваясь этим вариантом использования). Она была представлена ​​на мероприятии NACIS 2012 Ричардом Донохью и соавторами . , Интересная часть о том, как они делают классификацию в зависимости от цели и требуемых характеристик.

ThomasG77
источник
3

Я нашел этот пост после поиска для сравнения текущих наборов инструментов веб-картографирования. Я думаю, что это все еще в основном актуально. Тем не менее, я хотел бы поделиться исчерпывающим списком инструментариев OSGeo в качестве дополнительного ресурса.

Barbarossa
источник
2

Может быть, вы также можете рассмотреть Heron . Он построен на Ext, и открытые слои вместе имеют множество шаблонов, которые вы можете настроить.

Другой потенциальный кандидат - GeoJS .

Abhijit Gujar
источник