我正在与我的一位同事就OpenLayers v / s Leaflet进行辩论。我的观点是,如果我们希望构建一个需要直接连接到Geoserver和PostGIS的项目,那么OpenLayers是更好的API。与Geoserver和PostGIS的连接功能。
所以我的项目详细信息如下,
使用地图界面获取功能信息
创建一个自定义工具,从用户获取他/她在地图上单击位置的纬度/经度,然后从栅格中获取气候数据(由服务器上的py脚本处理)。
允许用户上传excel,然后将其上传到py脚本,该脚本将返回一个GeoJSON,该GeoJSON将在地图上创建矢量要素。
允许用户创建矢量多边形,该多边形将从WFS图层获取与之相交的要素。从GeoServer上的PostGIS数据存储区中获取图层,并在地图上显示这些图层。
所以现在我很困惑,哪个更好,以及为什么要通过OpenLayers传单是否更有意义?
#1 楼
我在应用程序中同时使用了OpenLayers和Leaflet。在本论坛以及Planet-internet上,关于此主题的讨论太多了。它们通常分为两个阵营-OpenLayers的功能和灵活性与Leaflet的简单性。如果有人很快将“ OpenLeaf”计划与两全其美结合起来,我不会感到惊讶!您只需要做很少的步骤,就可以创建具有当今Web和移动GIS应用程序新鲜感和吸引力的应用程序。您的堆栈-GeoServer,PostGIS等是标准堆栈,因此可以轻松地合并OpenLayers或Leaflet。 br />OpenLayers周围只有一堆材料。它比Leaflet成熟得多。
检查提交和用户的比较。
OpenLayers在地图控件上具有更多的功能。
#2 楼
一路散发传单。我觉得Leaflet是基于开源tile的浏览器客户端发展的下一步。 Ka-Map-> OpenLayers->小叶。 OpenLayers通过尝试让所有人都拥有万物而变得肿,Leaflet完成了80%的时间需要20%的事情。评论
如何在OpenLayers vs Leaflet中支持矢量切片?
– QMaster
12月20日16:17
#3 楼
尽管我在WebGIS应用程序中使用了Leaflet,但OpenLayers比Leaflet具有更多优势。例如,如果您想在移动设备中使用应用程序,那么OpenLayers暂时是必需的。 (阅读代码和理解结构更容易)。如果您有时间限制并且对JavaScript有一点经验,那么使用Leaflet可能是更好的解决方案,可以更快地完成它。或者,如果您想开发一个非常简单的应用程序,那么一开始就可以轻松地应用Leaflet。 。因为当您的应用程序变得复杂时(例如,从数据库调用复杂的层,开发强大的移动应用程序等),Leaflet开始限制您的能力。因此,我认为在学习阶段花一些时间来理解和学习OpenLayers结构最终将是值得的。考虑到项目的详细信息;
使用地图界面获取功能信息:
Leaflet和OpenLayers都可以完美地做到这一点。这里的重点是获取单击事件的坐标并将请求发送到服务器。这两个应用程序的请求链接都将相同。来自栅格的数据(由服务器上的py脚本处理):
我在Leaflet中实现了自己(我也顺便称呼了气候数据)。我不是从服务器上获取栅格数据,但是这里的重点是创建一个请求链接,这对于两个应用程序都很容易。但是,如果要在此阶段选择多边形,则Leaflet很难实现。
允许用户上传excel,然后将其上传到py脚本,该脚本返回一个GeoJSON,该GeoJSON在地图上创建Vector Feature:
Leaflet和OpenLayers的工作大致相同。我不能说哪个更好。
允许用户创建矢量多边形,它将从WFS图层获取与之相交的要素:
I尚不了解OpenLayers的编辑能力,但Leaflet有一个名为Leaflet Draw的插件,在完成绘制后,该插件易于使用和操纵图形(在javascript端)。如果您要在WFS服务器上操作空间数据,Leaflet也具有WFS-T支持。我不知道,OpenLayers可能会比这更好。 OpenLayers可以更好地完成PostGIS服务器的连接,因此更适合此工作。这将解决基于Web的GIS应用程序开发人员遇到的所有问题。
#4 楼
本演示文稿中的两个框架有很大的比较:另一篇文章也有一个很好的总结: >客户经常问我们:“使用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,体验更好。仍然不如原生,但绝对可用,是一个真正的选择。评论
有趣。我本来希望Leaflet在移动设备上更轻便,更流畅。感谢您分享这次经验。
– LarsH
2014-09-10 23:29
@Christian Fritz-您是使用OL3还是OL2?
– sfletche
2014年9月11日20:04
@sfletche比较是在OL3和传单0.7.3之间
–克里斯蒂安·弗里茨(Christian Fritz)
2014年9月11日23:02
三年后,您对Leaflet和移动设备的感觉如何?有什么改善吗?
–莫格说要恢复莫妮卡
19年8月7日,12:50
当然是。我们在生产中使用传单,在移动设备上看不到任何问题。
–克里斯蒂安·弗里茨(Christian Fritz)
19年8月9日在19:07
#6 楼
我想查看两者的API文档。对我来说,OpenLayers
提供了很多功能,但是开发/调试时间更长。 Leaflet
比OL更性感,更易用,但是,如果您想对地图做很多事情,我想有一天您可能需要Leaflet
尚未实现的功能! br /> 我真的建议看一下API! OpenLayers&Leaflet
此外,您可能还需要考虑到Leaflet的当前稳定版本是
0.5.1
,但OpenLayers是2.12
。PS。如果我想开发移动应用程序,我想我可以选择
Leaflet
。#7 楼
有一个基本的教程,通过让您在OpenLayers 3和Leaflet中构建相同的东西来比较它们的API。它是由Astun Technology编写的,教程任务是:带OSM磁贴的基本地图
带军械测量磁贴的OS-GB映射
带标记的GeoJSON图层
GeoJSON层的信息
WMS层的信息
WMS层的信息
这是链接:https://astuntechnology.github.io/osgis-ol3-leaflet/index.html
#8 楼
这取决于您要执行的操作。对于80%的Web地图项目,Leaflet更加简单快捷。大多数情况下,我发现OpenLayers过于复杂以至于不能做真正简单的事情,特别是从版本3开始。
例如,创建一个图层选择器在Leaflet中可能需要5-6行代码,而在OpenLayers 4中,您必须从头开始构建它。您有很棒的工具来执行此操作,但是大多数时候您不希望使用自定义的图层选择器,而只是可以正常工作。互联网上有关OpenLayers 2的辩论已经过时,因为版本3与版本2不兼容。我们现在是版本4。版本2有很多简单的东西,例如图层选择器,弹出窗口等。以及更复杂的功能;但是无论出于什么原因,他们只是删除了这类内容,以便向复杂而强大的系统发展。此外,与2012年相比,现在关于Leaflet的信息更多,并且它是一种更加成熟的技术。
作为结论,请问自己是否需要汽车或太空飞船。您不会开车,但是驾驶太空飞船去购物可能真的很复杂。
评论
事情已经变了,如今捆绑包大小的差异不再像以前那样巨大。截至本评论发布之日,Leaflet的压缩大小为40.1KB + Gzipped,OpenLayers的压缩大小为66.5KB + Gzipped。 OpenLayers本机支持矢量切片,而Leaflet不支持。不提倡任何东西,只发布一些更新。
–迷人的机器人
6月22日23:59