Comparer différentes bibliothèques de mappage JavaScript?


138

Je travaille sur un système de cartographie basé sur le Web et j'essaie de déterminer quelle bibliothèque utiliser.

Ce sont des liens vers des comparaisons des bibliothèques disponibles:

entrez la description de l'image ici

La liste des bibliothèques à ce jour:

  • Google Maps
  • Terre virtuelle Microsoft
  • MapQuest
  • Leaflet - "Le commentaire plus petit, plus rapide, plus récent et plus simple peut également être lu comme moins de fonctionnalités et moins testé." -Geographika (voir ci-dessous)
  • API ArcGIS pour JavaScript : fonctionne mieux avec ArcGIS Server (voir ci-dessous). Des extensions Google Maps et Bing maps sont également disponibles, vous permettant d'utiliser l'API ESRI avec Google / Bing maps (bien que cela s'applique à la plupart des bibliothèques).
  • API Yahoo Map
  • Via Michelin
  • OpenLayers - Une documentation complète, de nombreuses fonctionnalités et la possibilité d’utiliser différents fournisseurs de cartes.
  • Mapquery - MapQuery a été publié et contient maintenant une documentation utile. Son objectif très utile est de combiner OpenLayers et jQuery. Si vous êtes particulièrement intéressé par OpenLayers + jQuery ou si vous souhaitez contribuer à une bibliothèque de cartographie JavaScript, impliquez-vous et contribuez ainsi. Toutefois, si vous souhaitez simplement devenir utilisateur final ou si vous êtes nouveau dans ce domaine, il se peut que ce ne soit pas pour vous.
  • Mapstraction - Rend les choses très simples, en particulier avec plusieurs fournisseurs de fond de carte. Cependant, le travail est toujours en cours et la fonctionnalité manque par endroits, de même que la documentation. (Par exemple, "un objet GeoJSON avec le type" FeatureCollection "est un objet de collection de caractéristiques." Pas très informatif.) Il semble qu'il soit toujours en cours de développement, mais depuis le 04/04/11, aucun commit n'a été publié sur Github. depuis janvier.
  • deCarta - Possède un code javascript pour mobile et ordinateur de bureau - le premier est compatible HTML5 / CSS3 et le second est plus compatible avec les navigateurs. Code source fourni. Termes de développement les plus sympathiques pour une API commerciale. Vous êtes autorisé à marquer la carte et il existe plusieurs styles de carte. Vous pouvez choisir les données NAVTEQ ou OSM. Ils ont également plusieurs API mobiles. - édité par TheSteve0 - un employé de DeCarta
  • Cloudmade
  • Polymaps - Il est très facile de composer des données raster et vectorielles à partir de nombreuses sources différentes. Vous permet d'ajouter facilement vos propres couleurs, groupements et interactions. S'exécute rapidement, gère bien le chargement de la mosaïque d'arrière-plan et utilise seulement 30 Ko de Javascript. Un inconvénient potentiel: il utilise SVG, ce qui signifie qu'il ne fonctionne pas et ne fonctionnera pas dans MSIE 7 ou 8. Il fonctionne très bien dans tous les autres navigateurs et devrait fonctionner dans IE9.
  • Jump -jump est une bibliothèque de cartes de poids léger qui fonctionne de manière autonome. En d’autres termes, ce n’est pas un wrapper pour OpenLayers ou l’API GoogleMaps. Il est actuellement en cours de développement, mais de nombreuses fonctionnalités essentielles fonctionnent bien.
  • ModestMaps - Une autre bibliothèque de cartographie JS plus petite, plus rapide et plus récente, des fabricants de Mapbox et de TileMill.
  • Mapiator

OpenLayers est celui que j'utilise actuellement. Vous pouvez en faire beaucoup et cela prend en charge la plupart des types de données. Cependant ce n'est pas le meilleur pour tout. Par exemple, Leaflet semble plus lisse à bien des égards, avec l’affaiblissement des images et d’autres ajustements visuels. Si vous êtes intéressé par jQuery, vous pouvez consulter MapQuery, qui est une combinaison de jQuery et OpenLayers.

Réponses:


93

Cette question a été convertie en wiki de communauté et en wiki bloqué car il s'agit d'un exemple de question qui cherche une liste de réponses et semble être suffisamment populaire pour le protéger de la fermeture. Elle devrait être traitée comme un cas particulier et ne devrait pas être considérée comme le type de question qui est encouragée sur ce site ou sur tout autre site Stack Exchange, mais si vous souhaitez apporter plus de contenu, n'hésitez pas à le faire en modifiant cette réponse. .


Pour les développeurs en arrière-plan non SIG créant des applications cartographiques à fonction unique - je recommanderais probablement Leaflet (désormais pris en charge par MapBox). Facile à utiliser et petit. Plus de fonctionnalités reposent sur des plugins de qualité et de support variables.

L'application de type en ligne SIG - utilisez OpenLayers3 - contient la suite complète de sources de données, contrôles, etc. dans une seule bibliothèque. Il peut également être utilisé pour des applications de cartographie simples. Par conséquent, si vous avez un mélange, je l’utiliserai pour tout.

La combinaison bibliothèque / données est toujours disponible sur Google (par exemple, StreetView n’est disponible nulle part ailleurs).

Esri dispose de concepteurs d’applications Web, et comme indiqué ci-dessous, pourquoi compliquer les choses si vous utilisez déjà leur pile.

API commerciales (Google, Bing, Yahoo)

L'utilisation d'une API commerciale vous laisse à la merci des modifications apportées par le fournisseur à l'API ou aux conditions d'utilisation. Que se passe-t-il, par exemple, si soudainement le portail de votre gouvernement local qui utilise Google Maps fait apparaître des annonces publicitaires ? Vous souhaitez réutiliser votre code JavaScript Google Maps JavaScript pour un site Intranet? Vous devrez payer les droits de licence de 10 000 dollars.

Microsoft a souvent des conditions plus définies et fixes pour ses services (si vous payez), il peut donc y avoir moins de risque ici.

La récente réaction contre Twitter est un bon exemple de développeurs ayant une API qui a changé sous eux. Si vous ne payez pas pour un service, vous (ou votre système) êtes celui qui est vendu.

Google a commencé à facturer l' utilisation de leurs cartes à partir d'octobre 2011.

Esri

Comme d'autres l'ont déjà mentionné, si vous utilisez une pile Esri, alors l'API ArcGIS pour JavaScript fonctionnera sans problème. Venant d’un environnement SIG, Esri a probablement davantage pensé aux tâches et fonctions SIG traditionnelles qu’aux géants de la "néo-géographie" (bien qu’il s’agisse simplement d’une opinion ou d’un sentiment).

OpenLayers prend en charge les couches ArcGIS REST . Si vous souhaitez réutiliser votre code pour des sites Web non basés sur ESRI, c'est encore une API ouverte qui vous sert le mieux.

Utilisez OpenLayers ...

Je ne vois pas vraiment pourquoi les développeurs utiliseraient une API autre qu'OpenLayers. Projets Open Source mènent à des projets Open Source liés donc il y a une multitude de composants réutilisables là - bas comme la bibliothèque GeoExt , MapQuery et GeoPrisma .

J'ajouterai simplement que le fait qu'un projet soit Open Source ne le rend pas automatiquement meilleur que ses équivalents commerciaux - mais l'API OpenLayers correspond à la concurrence commerciale dans ce cas, et la possibilité de voir comment fonctionne le source, les tests unitaires, construire des scripts, etc. signifie que vous pouvez facilement créer de nouvelles fonctionnalités par-dessus.

Des critiques récentes d’OpenLayers ont été formulées , principalement liées à la complexité, au style et à la taille. Christopher Schmidt, l'un des principaux développeurs d'OpenLayers, a opposé à ces arguments une contre-argumentation ici et ici .

Il est intéressant de noter que si vous avez besoin d' une simple API de cartographie Open Source alors jetez un oeil à Cloudmade de la brochure .

Le commentaire plus petit, plus rapide, plus récent et plus simple peut également être lu comme moins de fonctionnalités et moins testé.

Analysez la documentation de l'API pour Leaflet et OpenLayers . Ce dernier inclut des éléments tels que les couches WFS, les outils d'édition et le support SLD. Il a également été testé dans de nombreux environnements différents et fonctionne sous IE6 (permettant aux utilisateurs gouvernementaux et aux autorités locales).

Pour un affichage plus simple des données spatiales, Leaflet semble idéal et plus facile à démarrer. Cependant, je resterai avec OpenLayers pour des applications SIG plus riches en fonctionnalités.

Mises en garde

Un inconvénient possible est que les nouvelles innovations apparaissent souvent en premier dans les systèmes des fournisseurs commerciaux - cependant, celles-ci filtrent presque toujours jusqu'à OpenLayers dans le temps.

Enfin, je suis sûr qu'il existe certains scénarios dans lesquels d'autres API sont plus appropriées - sur du matériel personnalisé, pour s'intégrer à d'autres systèmes informatiques d'une entreprise ou si vous connaissez déjà une API et que vous pouvez obtenir un système développé deux fois plus rapidement. .

Toutes les API que vous avez mentionnées sont capables de produire d'excellents systèmes de cartographie en ligne, mais votre choix doit également correspondre à vos besoins de développement futurs.


50

Il y a un nouveau lecteur sur le front de la cartographie javascript - Leaflet . Développé par CloudMade sous licence BSD.

Semble vraiment prometteur.

entrez la description de l'image ici

( Source )


3
Wow, cela semble être une bibliothèque impressionnante. Je suis surpris de ne pas être au courant de celui-ci.
dkroy

2
Voici une comparaison du comportement de navigation des dépliants et des openlayers.
dkroy

2
Organigramme sympa. Leaflet est vraiment très sympa.
Mr_Chimp

7
Après avoir essayé d’utiliser Leaflet pour des tâches plus complexes, je dois admettre que c’est assez limité par rapport à OpenLayers ou à GeoExt. Il est très facile à installer et très joli, mais il y a une limite à ce que vous pouvez faire en termes d'interactions. Encore une fois, chacun a sa place.
Mr_Chimp

3
Une copie mise à jour du graphique (à partir de janvier 2012) est disponible à l' adresse suivante
Will.

35

J'avais un projet Google Maps / arcgis api et il y a environ un an, j'ai décidé d'essayer OpenLayers. Plus je travaillais avec cela, plus je l'aimais, alors j'ai décidé de migrer. J'ai coupé 30 à 100 lignes de code google en 1 ou 3 lignes tout au long de mon code. Tout simplement parce que OpenLayers avait des fonctions pour ce que je voulais faire et que je devais le coder manuellement pour Google Maps.


2
C'est parfait. Merci pour votre contribution! Je ne suis pas sûr qu'il y ait une bonne réponse à cette question, alors les opinions et les anecdotes sont utiles.
Mr_Chimp

2
+1 J'avais toujours choisi OpenLayers plutôt que Google Maps si la tâche consistait à afficher plus qu'une main pleine de marqueurs.
underdark

20

CartoDB est un outil d'analyse, de visualisation et de partage de vos données géospatiales dans PostGIS. Il s'agit d'uneplate-forme de base de données géospatiale open source qui fournit une couche d'API SQL. Il permet aux développeurs d’effectuer des requêtes sur une base de données Cloud PostrgreSQL + OpenGIS optimisée à des fins géospatiales.

entrez la description de l'image ici



12

Je compare (avec les faits saillants et les notes) le code requis pour effectuer une tâche simple, spécifique et courante dans:

  • MapQuest
  • Google Maps
  • bing
  • Ovi
  • Esri
  • OpenLayers
  • jQuery Geo

ici: http://trippingthebits.com/geopres/

Le post est pour une présentation que j’ai donnée sur jQuery Geo, qui manque malheureusement de votre liste.


C'est un bon article. J'aime ton code couleur! Très bonne idée.
Mr_Chimp

jQuery Geo FTW!
Sameer

1
Merci @SameerAlibhai! Restez à l'écoute, nous publierons bientôt la Release Candidate 1.
Ryanttb

11

Si vous souhaitez visualiser un globe dans le navigateur, Césium en est un bon. (Fonctionne sans plugin mais le navigateur a besoin de la prise en charge de WebGL)

Peut afficher les vues 3D, 2D et 2.5D

Césium supporte 3D, 2D et 2.5D

Prise en charge de différents formats de raster / vecteur (KML, etc.)

Prise en charge des données differnet raster / vectorielles

Contrôle gratuit des vols de caméra et de caméra

Contrôler la caméra

... et tout dans les navigateurs (modernes).


2
wow, c'est vraiment très beau projet! :)
Krystian

1
OK, mais pouvez-vous alors nous expliquer pourquoi Cesium ne prend pas en charge (et beaucoup d’autres) le WFS (Web Feature Service) standard? Il me semble que le téléspectateur est très puissant, mais pas du tout un système SIG.
Entrepreneur Web-GIS Le

11

Je ne suis pas compétent pour faire une comparaison complète, mais j'ai réalisé trois petits projets différents avec Polymaps et je peux faire un commentaire à ce sujet. Son principal atout réside dans le fait qu'il est très facile de composer des données raster et vectorielles à partir de nombreuses sources différentes. Il peut répondre à toutes vos exigences, notamment en vous permettant d'ajouter facilement vos propres couleurs, groupes et interactions. Polymaps est également assez efficace: il fonctionne rapidement, il gère bien le chargement des mosaïques en arrière-plan et n’a que 30k de Javascript.

Le principal inconvénient de Polymaps est qu’il utilise SVG, ce qui signifie qu’il ne fonctionne pas et ne fonctionnera pas dans MSIE 7 ou 8. Il fonctionne très bien dans tous les autres navigateurs et devrait fonctionner dans IE9, mais j’ignore à quel point il a été testé. Le format SVG est également un atout: il est facile à programmer et le rendu est superbe, en particulier la mise à l’échelle des entités vectorielles et raster par petites incréments.

Une mise en garde à propos des bibliothèques: si vous souhaitez utiliser les mosaïques raster de Google comme fond de carte, vous devez utiliser leurs bibliothèques Javascript. OpenStreetMap, etc. ont des licences beaucoup plus permissives qui vous permettent de choisir vos bibliothèques.

(Cette réponse date de 2011 et beaucoup a changé. Polymaps n'est plus mis à jour. À ce stade, Leaflet est la bibliothèque open source préférée.)


4
Juste une mise à jour de ma réponse; Polymaps n'a pas connu de développement depuis quelques années. C'est toujours une bibliothèque intéressante avec des capacités uniques, mais je ne l'utiliserais pas pour un nouveau projet. Ces jours-ci, j'utilise Leaflet.
Nelson

9

Je suis un étudiant diplômé en cartographie et un nouveau venu dans le domaine de la cartographie Web, mais je travaille sur un projet visant à comparer les différentes technologies et à élaborer un guide de base pour bien démarrer dans la cartographie Web. Mon analyse n’est en aucun cas exhaustive, et j’essaie d’avoir une idée de chaque bibliothèque en jouant avec elles et avec des articles comme ceux-ci de programmeurs plus expérimentés. Je serais ravi de recevoir vos impressions.


(+1) Merci pour votre contribution - Bienvenue dans notre communauté!
whuber


7

Mapfluence de la cartographie urbaine est également dans le mélange. Plate-forme de cartographie hébergée offrant des services géographiques basés sur le Web, accessible via REST et avec l'API JavaScript (docs / tutoriels améliorés en route). Ou OL si vous le voulez. Nous rendons nos propres mosaïques de base , nous avons un vaste catalogue de données à la demande, ainsi que des données de support et d'autres requêtes de visualisation.

Consultez le webinaire O'Reilly sur Wed consacré à geoservices + big data pour obtenir un aperçu de ce qu’est la géo.


7

Vous pouvez également jeter un coup d'œil à Geomajas . Il s’agit d’une infrastructure SIG écrite en Java (y compris un client Java utilisant GWT). Cependant, un plug-in est actuellement en cours pour fournir une API complète côté client en JavaScript. Pas encore assez stable mais ça vaut le coup d'oeil. L’utilisation de Geomajas présente l’avantage d’être une forte intégration entre le système backend et le client, ce qui présente quelques avantages, notamment la possibilité de décharger facilement le travail sur le serveur, en particulier pour des raisons de sécurité.


6

Je recommanderais ammap: http://www.ammap.com Ils utilisaient des cartes Flash, mais ont récemment introduit des cartes JavaScript avec de nombreuses fonctionnalités intéressantes.


4

Si vous recherchez une bibliothèque de visualisation de données, consultez Highmaps , de la part des personnes à l'origine de Highcharts (moi-même inclus - actuellement employé en tant que développeur de logiciels). Il est gratuit pour une utilisation non commerciale, fonctionne parfaitement avec les navigateurs mobiles (prise en charge tactile intégrale) et les anciennes versions d'Internet Explorer jusqu'à IE6. Prend en charge des fonctionnalités dynamiques avancées telles que l'exploration et des info-bulles riches.

entrez la description de l'image ici entrez la description de l'image ici



1
Assez juste, édité.
Oystein

3

Une méthodologie intéressante peut être trouvée pour comparer les fonctionnalités souhaitées à partir de bibliothèques de cartographie JavaScript (non limitée à ce cas d'utilisation). Elle a été présentée à la conférence NACIS 2012 par Richard Donohue & al. . La partie intéressante concerne la manière dont ils classent la classification en fonction de l’objet et des fonctionnalités requises.



2

Peut-être que vous pouvez également considérer Heron . Il est construit sur Ext et les couches ouvertes ensemble, ils ont de nombreux modèles que vous pouvez personnaliser.

GeoJS est un autre candidat potentiel .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.