选择OpenLayers还是Leaflet?[关闭]


93

我在OpenLayers v / s Leaflet上与一位同事进行辩论。我的观点是,如果我们希望构建一个需要直接连接到Geoserver和PostGIS的项目,则OpenLayers是更好的API。

然后我发现了Open Data Kit,它看起来很新,但是具有与Geoserver和PostGIS的连接功能。

所以我的专案细节如下,

  1. 使用地图界面获取功能信息
  2. 创建一个自定义工具,从用户那里获取纬度/经度,以了解他/她在地图上单击的位置,然后从栅格中获取气候数据(由服务器上的py脚本处理)
  3. 允许用户上传excel,并将其上传到py脚本,该脚本返回一个GeoJSON,该GeoJSON在地图上创建矢量要素
  4. 允许用户创建矢量多边形,该矢量多边形将从WFS图层获取与其相交的要素。
  5. 从GeoServer上的PostGIS数据存储中获取图层,并在地图上显示图层。

所以,现在我对哪个更好感到困惑,为什么在Leaflet上使用OpenLayers更有意义?


1
取决于项目。
CaptDragon 2012年

1
一种。通过提供有关该项目的更多详细信息来改善您的问题。b。您正在为用户谈论与数据库的直接连接(postgis),确定吗?
巴勃罗(Pablo)

抱歉,更新了我的项目详细信息
Sam007 '20


通常,我更喜欢Leaflet,因为它倾向于导致更短,更易读的.js文件。但是OL可以做Leaflet无法做的事情,因为允许您进行更深入,更详细的访问-所以,我同意。这取决于项目,但是我投了1张Leaflet的票。
MartinHvidberg

Answers:


87

我在应用程序中同时使用了OpenLayers和Leaflet。在这个论坛上以及在Planet-internet上,关于这个主题的讨论都很多。它们通常分为两个阵营-OpenLayers的功能和灵活性与Leaflet的简单性。如果有人很快将“两全其美”结合起来而产生“ OpenLeaf”计划,我不会感到惊讶!

我发现Leaflet使用起来非常简单,与700,000个Openlayer相比,体积很小,只有64K,而且您只需几个步骤就可以创建具有当今Web和移动GIS应用程序新鲜感的应用程序。您的堆栈-GeoServer,PostGIS等是标准堆栈,因此可以轻松合并OpenLayers或Leaflet。

话虽如此,出于以下原因,我仍将继续使用OpenLayers

  1. OpenLayers周围只有大量材料。它比Leaflet成熟得多。
  2. 查看关于提交和用户比较
  3. OpenLayers,GeoServer,PostGIS堆栈已在FOSS世界中得到了充分证明,以致您走上了坚实的道路。
  4. OpenLayers在Map Controls上有更多功能。
  5. 尽管创建过渡和视觉效果需要做更多工作,但可以在OpenLayers中完成。

1
还有移动设备呢?哪个更合适?
Sam007

1
是。我目前正在使用OpenLayers和SenchaTouch构建移动应用程序。Openlayers上运行着许多移动地图应用程序。这是一些示例openlayers.org/dev/examples/?q=mobile
Ramesh Elaiyavalli 2012年

28

一路散发传单。我觉得Leaflet是基于开源tile的浏览器客户端发展的下一步。Ka-Map-> OpenLayers->传单。

Leaflet易于使用,并且完全按照锡罐上的说明操作。OpenLayers通过尝试成为所有人的万物而变得肿,Leaflet完成了80%的时间所需要的20%的事情。


14
因此,这不仅仅是“一路走来的传单”,而是“如果您不需要其中缺少的所有这些功能中的任何一个,则为传单”。我同意Leaflet的使用要简单得多,但是如果您需要做的事情并不常见,则必须使用OL。
胡安

1
传单缺乏许多功能。Leaflet仅适用于非常基本的地图,但正如Ramesh Elaiyavalli Ol-3所解释的那样,它是最佳选择,您还可以通过使用自定义内置功能选择特征来减小尺寸。
阿披吉特·古吉

18

尽管我在WebGIS应用程序中使用了Leaflet,但OpenLayers比Leaflet具有更多优势。例如,如果您想在移动设备中使用应用程序,那么OpenLayers暂时是必需的。

有很多与OpenLayers相关的资源,但是我认为使用Leaflet开发应用程序比OpenLayers容易(阅读代码和理解结构更容易)。如果您有时间限制并且对Java语言有一点经验,那么使用Leaflet可能是一个更好的解决方案,可以更快地完成它。或者,如果您想开发一个非常简单的应用程序,则一开始就可以轻松地简化Leaflet。

但是,在用Leaflet开发应用程序之后,现在我希望我一开始就使用过OpenLayers。因为当您的应用程序变得复杂时(例如,从数据库调用复杂的层,开发强大的移动应用程序等),Leaflet开始限制您的能力。因此,我认为在学习阶段花一些时间来了解和学习OpenLayers结构最终将是值得的。

作为项目的细节考虑;

使用地图界面获取功能信息:

Leaflet和OpenLayers都可以完美地做到这一点。这里的重点是获取单击事件的坐标并将请求发送到服务器。这两个应用程序的请求链接将相同。

创建一个自定义工具,从用户那里获取纬度/经度,以了解他/她在地图上的点击位置,然后从栅格中获取气候数据(由服务器上的py脚本处理):

我在Leaflet中实现了这一目标(顺便说一句,我还打电话给了气候数据)。我不是从服务器上获取栅格数据,但是这里的重点是创建一个请求链接,这对于两个应用程序都很容易。但是,如果要在此阶段选择多边形,则Leaflet很难实现。

允许用户上传excel,并将其上传到py脚本,该脚本返回一个GeoJSON,该GeoJSON在地图上创建矢量要素:

Leaflet和OpenLayers的工作大致相同。我不能说哪个更好。

允许用户创建矢量多边形,这将从WFS图层获取与之相交的要素:

我对OpenLayers的编辑能力一无所知,但是Leaflet有一个名为Leaflet Draw的插件,在完成绘制后,该插件易于使用和操纵图形(在javascript方面)。如果您要在WFS服务器上操作空间数据,Leaflet也具有WFS-T支持。我不知道,OpenLayers可能比这更好。

从GeoServer上的PostGIS数据存储中获取图层,并在地图上显示图层:

毫无疑问,OpenLayers可以更好地完成此工作,因为它更易于连接PostGIS服务器。

顺便说一句,有一个名为OpenGeo Suite的应用程序套件,其中包括OpenLayers,GeoServer和PostGIS。这将解决基于Web的GIS应用程序开发人员遇到的所有问题。


不错的详细答案!
Devdatta Tengshe '16

三年后,您对Leaflet和移动设备的感觉如何?有什么改善吗?
莫夫

10

本演示文稿中的两个框架有很大的比较:

传单vs OpenLayers

另一篇文章中也有很大的总结:

客户经常问我们:“使用Map Suite WebAPI Edition构建现代Web应用程序时,哪个是最好的客户端JavaScript映射库?”就像软件开发中的许多事情一样,答案并不总是很清楚。答案取决于您的要求和开发偏好。由于这两个框架都有很好的文档说明,并且可以在移动设备上可靠地运行,因此我们通常会询问以下问题,以帮助我们的客户做出正确的决定。

映射正在构建的应用程序部分有多简单?

映射要求越简单,我们越倾向于使用Leaflet。Leaflet在处理最常见的映射任务(如消耗基础地图图块,平移和缩放)方面做得非常出色,其API易于理解且易于使用。但是,一旦您完成了常见任务,就需要使用Leaflet插件,而这会使事情变得更加复杂。不幸的是,您正在寻找的功能可能并不存在。

如果您具有功能丰富的功能丰富的应用程序,我们倾向于使用OpenLayers3。OpenLayers3具有更大,更复杂的API,它将使您能够执行Leaflet所具有的所有常见映射功能以及更多功能。例如,如果您的应用程序具有涉及地图投影的要求,则与使用Leaflet相比,OpenLayers 3将使您更轻松地满足这些要求。当然,使用更强大的API会带来更陡峭的学习曲线,因此在向项目涉众提供估算时,请记住这一点。

您要编写多少JavaScript代码?

由于Leaflet是比OpenLayers 3更高级别的API,因此通常只需较少的JavaScript代码即可启动和运行它。但是,一旦您想要偏离Leaflet提供的标准功能,除非有一个能够满足您确切需求的插件,否则您最终可能会写很多代码。另一方面,OpenLayers 3是一个较低级别的API,它需要更多的JavaScript编码来初始化和设置地图。当您有自定义和复杂的要求时,这会很方便,因为API可以更好地控制地图和数据。

摘要

最后,有时最好使用Leaflet,有时需要OpenLayers 3获胜。如果您的映射要求很简单,那么首先检查Leaflet是您的最大利益。但是,如果您正在寻找可定制性更高的映射库,并且不介意JavaScript开发,请使用OpenLayers 3。

由于这两个库都有其长处,因此我们在Map Suite WebAPI Edition中包含了Leaflet和OpenLayers 3的代码示例,可以通过产品中心下载或在ThinkGeo Wiki上查看它们。这些示例在决定使用哪个客户端Javascript映射库时是有用的资源,因为您可以直接看到两个库之间的不同用户体验和编码要求。

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


5

我刚刚为我的新移动项目经历了这个决定,明显的赢家是OpenLayers。在撰写本文时,传单在移动设备上相当缓慢。平移/缩放的过渡感觉不顺畅,有时会迷失方向。短融入本土,我试过的OpenLayers和经验是好。仍然不如本地人好,但绝对可以使用并且是真正的选择。


1
有趣。我本来希望Leaflet在移动设备上更轻便,更流畅。感谢您分享这次经验。
LarsH 2014年

@Christian Fritz-您是使用OL3还是OL2?
sfletche 2014年

2
@sfletche比较是在OL3和传单0.7.3之间进行的比较
Christian Fritz

三年后,您对Leaflet和移动设备的感觉如何?有什么改善吗?
Mawg

当然是。我们在生产中使用传单,在移动设备上看不到任何问题。
克里斯蒂安·弗里茨

3

我想查看两者的API文档。对我来说,似乎OpenLayers提供了很多功能,但是开发/调试时间更长。

Leaflet比OL更性感,更易用,但是,如果您想对地图做很多事情,我想有一天您可能需要一个尚未实现的功能Leaflet

我真的建议看一下API!OpenLayers传单

另外,您可能需要考虑Leaflet的当前稳定版本,0.5.1但是它是2.12针对OpenLayers的。

PS:如果我想开发移动应用程序,我想我可以去Leaflet


3

有一个基本的教程,通过让您在OpenLayers 3和Leaflet中构建相同的东西来比较它们的API。它由Astun Technology编写,教程任务为:

  • 带OSM磁贴的基本地图
  • 带有军械测量图块的OS-GB地图
  • 带标记的GeoJSON图层
    • GeoJSON层的信息
  • WMS层
    • WMS层的信息

这是链接:https : //astuntechnology.github.io/osgis-ol3-leaflet/index.html


由空格键滚动被打破btw
bugmenot123

3

这取决于您要执行的操作。对于80%的Web地图项目,Leaflet更加简单快捷。

就像您不需要太空飞船来绕过您的邻居一样,大多数时候,我发现OpenLayers太复杂了,无法完成真正简单的事情,特别是从版本3开始。

例如,创建一个图层选择器在Leaflet中可能需要5-6行代码,而在OpenLayers 4中,您必须从头开始构建它。您有很棒的工具可以执行此操作,但是大多数时候您不希望使用自定义的图层选择器,而只是可以正常使用。

另一个要考虑的重要问题是,互联网上的大多数信息,教程和辩论都与OpenLayers 2有关。由于版本3与版本2不兼容,它们已经过时了。我们现在是版本4。有很多简单的东西,例如图层选择器,弹出窗口等,还有更复杂的功能;但无论出于何种原因,他们只是删除了这类内容,以便向复杂而强大的系统发展。此外,与2012年相比,现在关于Leaflet的信息更多,并且它是一种更加成熟的技术。

结论是,问自己是否需要汽车或太空飞船。您不会开车,但是驾驶太空飞船去购物可能真的很复杂。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.