Choisir OpenLayers ou Leaflet? [fermé]

93

Je discutais avec un de mes collègues sur OpenLayers v / s Leaflet. J'ai déjà fait remarquer qu'OpenLayers est une meilleure API si nous souhaitons construire un projet nécessitant une connectivité directe au Geoserver et à PostGIS.

Ensuite, j'ai trouvé Open Data Kit , qui a l'air assez nouveau mais qui offre les fonctionnalités de connectivité avec Geoserver et PostGIS.

Donc, les détails de mon projet sont les suivants:

  1. Utiliser l'interface de la carte pour récupérer des informations sur les fonctionnalités
  2. Créez un outil personnalisé qui indique à l'utilisateur où il / elle clique sur la carte, puis récupère les données climatiques du raster (gérées par un script py sur le serveur).
  3. Permet à l'utilisateur de télécharger Excel, qui est envoyé au script py, qui renvoie un GeoJSON, qui crée des entités vectorielles sur la carte.
  4. Autoriser l'utilisateur à créer des polygones vectoriels, qui extrairont les entités qu'il intersecte de la couche WFS.
  5. Récupère les couches à partir du magasin de données PostGIS sur GeoServer et affiche les couches sur la carte.

Alors maintenant, je ne sais plus lequel est le meilleur et pourquoi utiliser OpenLayers plutôt que Leaflet a plus de sens ou pas?

Sam007
la source
1
Cela dépend du projet.
CaptDragon
1
une. Améliorez votre question en donnant plus de détails sur le projet. b. Vous parlez de connexion directe à la base de données (postgis) pour les utilisateurs, êtes-vous sûr?
Pablo
désolé, mises à jour les détails de mon projet
Sam007
En général, je préfère Leaflet, car cela a tendance à conduire à des fichiers .js plus courts et plus lisibles. Mais OL peut faire des choses que Leaflet ne peut pas, car vous avez un accès plus profond et plus détaillé - Donc, je suis d’accord. Cela dépend du projet, mais je vote pour Leaflet de ma part.
Martin

Réponses:

87

J'ai utilisé OpenLayers et Leaflet dans mes applications. Il y a eu tellement de discussions sur ce sujet dans ce forum et d'autres sur Planet-Internet. Ils se répartissent généralement en deux camps: les fonctionnalités et la flexibilité d’OpenLayers par rapport à la simplicité de Leaflet. Je ne serais pas surpris que quelqu'un lance une initiative "OpenLeaf" mariant bientôt le meilleur des deux mondes!

J'ai trouvé Leaflet très simple à utiliser, une taille réduite de 64 Ko, comparée à plus de 700 Ko Openlayers, et en très peu d'étapes, vous pouvez créer des applications qui ont la fraîcheur et le charme des applications Web et mobiles SIG d'aujourd'hui. Votre pile - GeoServer, PostGIS, etc., est une pile standard, donc OpenLayers ou Leaflet peuvent facilement être intégrés.

Cela dit, j'irais quand même avec OpenLayers pour les raisons suivantes

  1. Il existe juste une tonne de matériel autour d'OpenLayers. C'est beaucoup plus mature que Leaflet.
  2. Consultez la comparaison sur les commits et les utilisateurs .
  3. OpenLayers, GeoServer, PostGIS La pile est tellement éprouvée dans le monde des logiciels libres que vous vous dirigez vers un chemin solide.
  4. OpenLayers a un peu plus de fonctionnalités sur les contrôles de la carte .
  5. Bien que la création de transitions et d'effets visuels soit un peu plus difficile, cela peut être fait dans OpenLayers.
Ramesh Elaiyavalli
la source
1
Et qu'en est-il des appareils mobiles? Lequel est le mieux adapté?
Sam007
1
Oui. Je construis actuellement des applications mobiles à l'aide d'OpenLayers et de SenchaTouch. De nombreuses applications de cartes mobiles s'exécutent sur Openlayers. Voici quelques exemples openlayers.org/dev/examples/?q=mobile .
Ramesh Elaiyavalli
28

Dépliant tout le chemin. Je pense que Leaflet est la prochaine étape de l'évolution des clients de navigateur basés sur des tuiles open source. Ka-Map -> OpenLayers -> Leaflet.

Leaflet est simple à utiliser et fait exactement ce qui est écrit sur l'étain. OpenLayers est devenu trop lourd en essayant de plaire à tout le monde. Leaflet accomplit les 20% de tâches requises 80% du temps.

ChrisInCambo
la source
14
Donc, ce n'est pas seulement "Dépliant complet", c'est "Dépliant si vous n'avez pas besoin de toutes ces fonctionnalités manquantes". Je conviens que Leaflet est beaucoup plus simple à utiliser, mais si vous devez faire quelque chose de moins commun, vous devez utiliser OL.
Juan
1
Le dépliant manque de nombreuses fonctions. Leaflet est bon pour les cartes très basiques, mais comme expliqué par Ramesh Elaiyavalli, Ol-3 est la meilleure solution. Vous pouvez également réduire la taille en sélectionnant des entités à l’aide de la construction personnalisée.
Abhijit Gujar
18

Bien que j'ai utilisé Leaflet dans mon application webGIS, OpenLayers présente bien plus d'avantages que Leaflet. Par exemple, si vous souhaitez utiliser votre application sur des appareils mobiles, OpenLayers est indispensable pour le moment.

Il existe de nombreuses ressources liées à OpenLayers, mais je pense que développer une application avec Leaflet est plus facile que OpenLayers (il est plus facile de lire un code et de comprendre la structure). Si vous avez une limite de temps et avez un peu d'expérience en Javascript, utiliser Leaflet peut être une meilleure solution pour le faire plus rapidement. Ou si vous souhaitez développer une application très simple, Leaflet peut être beaucoup plus facile à adapter au début.

Mais après avoir développé une application avec Leaflet, je dis maintenant que je souhaiterais avoir utilisé OpenLayers au début. Parce que lorsque votre application devient complexe (comme appeler des couches complexes depuis une base de données, développer une application mobile robuste, etc.), Leaflet commence à limiter vos capacités. Je pense donc que passer un peu plus de temps à comprendre et à apprendre la structure d’OpenLayers au stade de l’apprentissage en vaudra la peine.

Comme les détails du projet considérés;

Utilisez l'interface de la carte pour récupérer des informations sur les fonctionnalités:

Leaflet et OpenLayers peuvent parfaitement le faire. Le point ici est d'obtenir les coordonnées de l'événement click et d'envoyer une demande au serveur. Le lien de demande sera le même pour les deux applications.

Créez un outil personnalisé qui indique à l'utilisateur où il / elle clique sur la carte, puis récupère les données climatiques du raster (gérées par un script py sur le serveur):

J'ai moi-même réalisé cela dans Leaflet (j'appelais aussi les données climatiques au passage). Je n'allais pas récupérer les données raster d'un serveur, mais le but ici est de créer un lien de requête, ce qui est facile pour les deux applications. Toutefois, si vous souhaitez sélectionner un polygone à ce stade, il est un peu difficile à atteindre pour Leaflet.

Permet à l'utilisateur de télécharger Excel, qui est envoyé au script py, qui renvoie un GeoJSON, qui crée des entités vectorielles sur la carte:

À peu près la même ligne de travail pour Leaflet et OpenLayers. Je ne peux pas dire lequel est le meilleur.

Autoriser l'utilisateur à créer des polygones vectoriels, qui extrairont les entités qu'il intersecte du calque WFS:

Je n'ai aucune idée des capacités d'édition d'OpenLayers, mais Leaflet a un plugin appelé Leaflet Draw, qui est facile à utiliser et à manipuler les dessins (du côté javascript) une fois le dessin terminé. En outre, Leaflet prend en charge WFS-T si vous souhaitez manipuler les données spatiales sur le serveur WFS. OpenLayers pourrait être meilleur que cela, je ne sais pas.

Récupère les couches à partir du datastore PostGIS sur GeoServer et affiche les couches sur la carte:

Il est clair qu'OpenLayers convient mieux à ce travail, car il est plus facile de connecter un serveur PostGIS.

À propos, il existe une suite d'applications appelée OpenGeo Suite, qui inclut OpenLayers, GeoServer et PostGIS; ce qui résoudra tous les problèmes rencontrés par un développeur d’applications SIG basé sur le Web.

mkturkeri
la source
Belle réponse détaillée!
Devdatta Tengshe
1
Trois ans plus tard, que pensez-vous de Leaflet & Mobile? Des améliorations?
Mawg
10

Il existe une excellente comparaison entre les deux cadres de cette présentation :

Leaflet vs OpenLayers

Et un autre article a aussi un bon résumé:

Les clients nous demandent souvent: «Quelle est la meilleure bibliothèque de mappage JavaScript côté client à utiliser lors de la création d'une application Web moderne avec Map Suite WebAPI Edition?» Comme dans le développement logiciel, la réponse n'est pas toujours claire. La réponse dépend de vos exigences et de vos préférences de développement. Étant donné que les deux cadres sont bien documentés et fonctionnent parfaitement sur les appareils mobiles, nous posons généralement les questions suivantes pour aider nos clients à prendre la bonne décision.

À quel point la cartographie de l'application que vous créez est-elle simple?

Plus les exigences de cartographie sont simples, plus nous nous orientons vers Leaflet. Leaflet effectue un travail fantastique en gérant les tâches de cartographie les plus courantes telles que la consommation de mosaïques de carte de base, le panoramique et le zoom. Son API est facile à comprendre et à utiliser. Cependant, une fois que vous avez dépassé les tâches habituelles, vous devez utiliser les plug-ins Leaflet, où les choses se compliquent. Il se peut que certaines fonctionnalités que vous recherchez ne existent malheureusement pas.

Si vous possédez une application riche en fonctionnalités avec de nombreuses fonctionnalités, nous préférons utiliser OpenLayers 3. OpenLayers 3 dispose d'une API plus grande et plus complexe qui vous permettra de réaliser toutes les fonctions de mappage courantes de Leaflet et bien d'autres. Par exemple, si votre application a des exigences en matière de projection cartographique, OpenLayers 3 vous permettra de les remplir plus facilement que si vous utilisiez Leaflet. Bien entendu, une API plus robuste entraîne une courbe d'apprentissage plus abrupte. N'oubliez pas cela lorsque vous fournissez des estimations aux parties prenantes de votre projet.

Combien de code JavaScript voulez-vous écrire?

Puisque Leaflet est une API de niveau supérieur à OpenLayers 3, il faut généralement moins de code JavaScript pour le rendre opérationnel. Une fois que vous souhaitez vous écarter de la fonctionnalité standard fournie par Leaflet, il est toutefois probable que vous finissiez par écrire beaucoup de code, à moins qu'un plug-in ne réponde exactement à vos besoins. D'autre part, OpenLayers 3 est une API de niveau inférieur qui nécessite davantage de codage JavaScript pour initialiser et configurer la carte. Cela peut être pratique lorsque vous avez des exigences personnalisées et complexes, car l’API permet un contrôle accru de la carte et de vos données.

Sommaire

En conclusion, il est parfois préférable d’utiliser Leaflet et d’OpenLayers 3. Si vos besoins en matière de cartographie sont simples, il est dans votre intérêt de commencer par consulter Leaflet. Mais si vous recherchez une bibliothèque de cartographie plus personnalisable et ne craignez pas de vous perdre avec le développement JavaScript, utilisez OpenLayers 3.

Puisque les deux bibliothèques ont leurs points forts, nous avons inclus des exemples de code pour Leaflet et OpenLayers 3 avec Map Suite WebAPI Edition, qui peuvent être téléchargés via Product Center ou affichés sur le wiki ThinkGeo. Ces exemples sont des ressources utiles pour choisir la bibliothèque de mappage Javascript côté client à utiliser pour votre application, car vous pouvez voir directement les différentes expériences utilisateur et exigences de codage entre les deux bibliothèques.

De http://blog.thinkgeo.com/2015/09/08/leaflet-vs-openlayers-3-which-is-the-better-client-side-javascript-mapping-library/

Simon East
la source
5

Je viens de prendre cette décision pour mon nouveau projet mobile et le gagnant clair est OpenLayers. Leaflet, au moment d'écrire ces lignes, était plutôt lent sur mobile. Les transitions pour le panoramique / zoom ne se sentaient pas en douceur et cela désorientait parfois. À défaut de devenir natif, j'ai essayé OpenLayers et l'expérience est bien meilleure. Pas aussi bon qu'un natif, mais définitivement utilisable et une vraie option.

Christian Fritz
la source
1
Intéressant. Je me serais attendu à ce que Leaflet soit plus léger et plus lisse sur un appareil mobile. Merci de partager cette expérience.
LarsH
@ Christian Fritz - était votre expérience avec OL3 ou OL2?
dimanche
2
@sfletche la comparaison était entre OL3 et le dépliant 0.7.3
Christian Fritz
Trois ans plus tard, que pensez-vous de Leaflet & Mobile? Des améliorations?
Mawg
Oui définitivement. Nous utilisons des brochures en production et nous ne voyons aucun problème sur mobile.
Christian Fritz
3

Je dirais de vérifier la documentation de l'API pour les deux. Pour moi, cela semble OpenLayersoffrir une multitude de fonctionnalités, mais le temps de développement / débogage est plus long.

LeafletC'est plus sexy et beaucoup plus facile que l'OL, cependant si vous voulez faire beaucoup avec votre carte, je pense qu'un jour vous aurez peut-être besoin d'une fonctionnalité qui n'est pas encore implémentée Leaflet!

Je recommande vraiment de regarder les API! OpenLayers & Leaflet

Vous pourriez aussi avoir besoin de considérer que la version stable actuelle pour la notice est , 0.5.1mais il est 2.12pour OpenLayers.

PS Si je veux développer une application mobile, je pense pouvoir y aller Leaflet.

Mahdi
la source
3

Il existe un didacticiel de base qui compare les API d’OpenLayers 3 et de Leaflet en vous permettant de créer la même chose dans les deux cas. Il est écrit par Astun Technology et les tâches du tutoriel sont les suivantes:

  • Carte de base avec des tuiles OSM
  • OS-GB Carte avec mosaïques Ordnance Survey
  • Couche GeoJSON avec marqueurs
    • Info pour la couche GeoJSON
  • Couche WMS
    • Info pour la couche WMS

Voici le lien: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html

Crantok
la source
le défilement par la barre d'espace est interrompu btw
bugmenot123
3

Cela dépend de ce que vous essayez de faire. Leaflet est plus simple et plus rapide pour 80% des projets de cartes Web.

De la même manière, vous n'avez pas besoin d'un vaisseau spatial pour parcourir votre quartier, mais la plupart du temps, je trouvais OpenLayers trop complexe pour faire des choses très simples, spécialement à partir de la version 3.

Par exemple, la création d'un sélecteur de couche prend peut-être 5 à 6 lignes de code dans Leaflet, tandis que dans OpenLayers 4, vous devez le construire à partir de zéro. Vous disposez d'excellents outils pour le faire, mais la plupart du temps, vous ne voulez pas de sélecteur de calque personnalisé, mais simplement d'un sélecteur de calque qui fonctionne correctement.

Une autre chose importante à considérer est que la plupart des informations, tutoriels et débats sur Internet concernent OpenLayers 2. Ils sont périmés, car la version 3 n'est pas compatible avec la version 2. Et nous en sommes maintenant à la version 4. Version 2 eu beaucoup de choses simples comme le sélecteur de couches, les popups, etc. avec des fonctions plus complexes; mais pour une raison quelconque, ils ont simplement supprimé ce genre de choses afin d'évoluer vers un système complexe et très puissant. En outre, il existe beaucoup plus d'informations sur Leaflet qu'en 2012 et il s'agit d'une technologie plus mature.

En conclusion, demandez-vous si vous avez besoin d'une voiture ou d'un vaisseau spatial. Vous ne volerez pas avec une voiture, mais conduire un vaisseau spatial pour faire du shopping peut être très compliqué.

Carlos Sarille
la source