OpenLayers vs Google Maps?[关闭]


169

我曾经使用过Google Maps两次,但对OpenLayers感到好奇。
在开始任何形式的编码之前,我会想到以下两个问题,

  • 为什么我要使用OpenLayers而不是Google Maps?
  • 对于已经使用过OpenLayers的人:我可能遇到任何常见的陷阱/问题吗?
    • 搭配使用JavaScript框架又如何呢?我已经看到它正在使用Prototype,并且我知道Prototype,所以就可以了。但是,使用诸如MooTools之类的东西呢?(与原型,BTW不兼容)
    • 是否存在与速度和性能相关的问题?我需要我的应用程序具有响应能力,不能等待数小时才能显示地图。
  • 是否有很多地方可用的地图,或者缺少很多地方?
    • 也就是说,我在法国,需要我的应用程序才能至少在大城市工作...可以吗?
    • 如果不是,是否容易找到OpenLayers的图层和可视化并将其集成?
  • 有没有显示道路的API?
    • 例如,显示仅单向的道路。
    • 如果是,我该怎么做?我是否需要某种包含这些道路信息的文件,然后自己在地图上显示它们?
  • 您知道OpenLayers的任何好教程吗?

我还没有尝试过,这些只是出乎意料的问题...


出于好奇,出于哲学原因,为什么“ OSS许可证”会成为支持OpenLayers的观点?假设Google的许可允许您免费做自己想做的事情,为什么它会左右您的决定?
标记

7
@Mark Google的许可证有问题。IANAL,但我了解在Google Maps上显示数据会授予Google复制,修改,转换和重新分发数据的无限许可。例如在Google Maps上显示任何来自UK Ordnance Survey GIS产品的数据都是违法的。OSS的另一个优点是OpenLayers不受一个组织的异想天开。尽管实际上,您可能可以相信Google的明智(以及金钱和商业原因)来支持Google Maps的未来发展
MarkJ 2010年

1
这些文章可能会有些用处:EveryBlock-关于我们的地图:blog.everyblock.com/2008/feb/18/maps列表分开- 控制您的地图(同样来自EveryBlock)alistapart.com/articles/takecontrolofyourmaps
mg1075

8
Google地图并非完全免费(google.com/support/forum/p/maps/…)。许可证取决于您的使用方式。
密苏里州

如果您找不到关于SO的答案,那么值得在GIS.SE网站上查看所有地理信息。
罗伊

Answers:


158

这是一个非常好的问题!我是OpenLayers的专业开发人员和支持者,所以我将从这个角度解决您的问题。

为什么我要使用OpenLayers而不是Google Maps?

  • 灵活性:您不受任何特定地图提供商或技术的束缚。您可以随时更改,而不必重写整个代码。开箱即用地支持Google,Yahoo,Microsoft,WMS,ArcGIS Server,MapServer等。
  • 矢量支持:更好地支持点,折线和多边形。
  • 控制:您可以添加可能需要的任何新功能。我亲自为OpenLayers编写了三个插件,其中两个是或将成为源代码的一部分。
  • 调试:单步调试源代码时,调试起来容易得多!

我完全不会担心该项目的长期可行性。它是首要的开源客户端映射库。

我可能遇到任何常见的陷阱/问题吗?

  • 我遇到的最大陷阱是使用Web Mercator(Google)投影。使用Google,Yahoo和Microsoft基本地图在OpenLayers地图中显示像WGS 84这样的通用投影和真实投影中的矢量数据可能会很痛苦。这些例子是你的朋友。

JavaScript框架兼容性

  • 我在所有工作中都使用jQuery框架,唯一遇到的问题是在OpenLayers之后引用jQuery。除此之外,一切都很顺利。
  • 表现很棒!唯一的问题将是地图服务器或向地图添加太多矢量。

有许多地方可用的地图吗?

  • 就像我说的,您可以在世界任何地方的任何来源使用底图。

有没有显示道路的API?

  • 我会检查CloudMade!已将OpenStreetMap项目转换为地图图块服务,并允许自定义样式。我相信您可以(以您的示例为例)以一种特殊的方式来设计单向街道。CloudMade开发人员专区

您知道OpenLayers的任何好教程吗?

我希望这是有用的。如果您有任何问题,我会在Stack Overflow上讨论!


5
嗨!非常感谢您的回答,这确实很有用!肯定有一些有趣的观点(更好的矢量支持可能对我正在考虑的项目很有用;这并不是你唯一在说的有趣!);也许我会在某个时候问其他问题:我还没有开始使用OL(这个问题是相当“ prelimar”的一个^^),但是我想,时间到了,考虑我得到的答案!
Pascal MARTIN

5
+1。我尝试不键入此评论,但我无能为力。WGS84不是投影。(值得尝试学习这些知识-我很痛苦地学习了一些GIS,它确实对地图有帮助。)
MarkJ 2010年

1
WGS84是一个地理坐标系(用于在椭球上显示经纬度)。Web墨卡托几乎是事实上的Web投影。
罗伊

35

这不一定是OpenLayers或Google Maps的问题。毕竟,您可以在OpenLayers中使用Google Maps作为地图背景。一些更具体的答案:

为什么选择OpenLayers?

  • OpenLayers可以合并来自不同来源的地图(Google地图背景,WMS叠加图,来自KML或GML文件的矢量数据或WFS等)
  • 与Google Maps相比,您可以为OpenLayers设置更多样式
  • 开源,调试时可以检查源代码
  • 如果您需要高精度的地图,请使用具有合适的地图服务器后端的OpenLayers而非Google Maps以获得更好的地图投影(Google Maps假定地球是一个完美的球体)

陷阱

  • 由于跨站点脚本的限制,如果要使用来自另一台服务器的矢量(WFS)数据,则需要一个代理

性能

  • 主要取决于地图后端的速度
  • 显示许多矢量功能(限制取决于浏览器,但是在一个视图上显示> 200)需要时间,但这不仅仅是OpenLayers的问题,更是浏览器问题

JavaScript框架

  • 看一下GeoExt,例如ExtJS + OpenLayers

可用地图

  • OpenLayers没有地图后端。您可以使用Google Maps,Yahoo Maps,MS Virtual Earth等,也可以使用任何WMS和WFS服务访问

好答案; 感谢所有这些信息!我尚不清楚细节,但是我可能不得不使用自己服务器上的一些数据,所以一切都应该没问题,尤其是具有集成多个后端的能力(如果我理解正确,^^我将有机会进行测试我希望在几天之内;
Pascal MARTIN

1
@Pascal,很高兴这个答案很有用。我可以补充一点,OpenLayers社区非常活跃,邮件列表非常有帮助。
尼尔斯·温纳德2009年

如果您想做的事没有在开发示例页面中涵盖,您很可能无法在Google地图上做到。例如,即使跨站点脚本也不必包含在代理中:openlayers.org/dev/examples/cross-origin.html
Glenn Plas

23

我还没有看到OpenLayers用户对SO的关注,但是他们在那里。该邮件列表的OpenLayers是相当活跃(我对用户开发,并看到了一天讨论各种事情50-100电子邮件的任何地方。你可以从这些链接搜索列表了。)。

我无法回答您所有的问题,但我要说的一件事是OpenLayers和Google地图不是互斥的。OpenLayers是一个JavaScript库,您可以使用它与Google地图进行交互。看看这个例子:使用谷歌地图的OpenLayers。这是OpenLayers的主要示例页面


感谢您的回答!很高兴看到邮件列表非常活跃,然后才开始处理项目^^
Pascal MARTIN

13

尚未完全阐明的一点是,使用OpenLayers可以避免Google对其地图API的服务条款施加的各种限制,包括:

  • 您不能仅在需要付费访问的网站部分或公众无法注册的私有网站(例如公司内部网)上合法使用Google地图。(IANAL,但请参阅《服务条款》 9.1常见问题解答

  • 您不能合法地(或实际上)将Google API用于离线应用程序(即从您自己的计算机提供图块的位置)。即使没有法律限制,Google在技术上也很难做到这一点,而OpenLayers却使它变得容易。

  • 如果您显示的地图内容令人反感,Google保留关闭对API的访问的权利。常见问题解答中提供的示例是一张非法毒品地图,可以很好地了解此限制可能涵盖的灰色区域。

有关更多详细信息,请参见此常见问题解答服务条款

话虽这么说,作为一个长期的Google Maps开发人员,最近开始使用OpenLayers,我认为Google Maps比OpenLayers具有更好的文档,更大的用户社区以及更清晰,更稳定的API。因此,您必须在某处进行权衡。


“您不能在需要付费访问的网站部分或公众无法注册的私有网站(例如公司内部网)上合法使用Google地图。” 那是不对的。您可以在网站的付费部分使用Google Maps,只要大多数用户无需付费即可使用您的网站和地图。例如,房地产网站。张贴者必须付费才能列出房屋,但绝大多数用户无需付费即可浏览网站。在这种情况下,双方都可以访问Google地图。
Craig

谢谢-我的意思是,您不能在需要付款的部分使用API 。我已经更新了我的帖子,并添加了更多链接来解决此问题。
nrabinowitz 2011年

OpenLayers在内部使用Google Maps API,因此您需要遵守相同的许可证。osgeo-org.1560.x6.nabble.com/…–
Alfredo Osorio

@AlfredoOsorio-是的,如果您使用Google图层,请使用。还有许多其他磁贴来源。
nrabinowitz 2014年

12

这实际上取决于您要使用地图的用途。只需在地图上绘制点,Google Maps就可以了。Google地图的地图图层也非常详细。另一方面,OpenLayers提供了更多功能,并且非常可扩展。

OpenLayers有许多示例可以帮助您入门。

至于地图,OpenLayers只是一个API,因此您需要提供它可以映射图层。Google Maps API将限于Google提供的地图图层。使用OpenLayer,您可以显示几乎所有公共可用的地图服务(WMS,WFS,TMS,WMS-C)。一个很好的例子是openstreetmap.org-(社区收集的全球街道地图)。可以将OSM作为TMS层添加到openlayers。查看此示例以获取指导。


嗨!看起来“我是”是您的第一个答案!欢迎!谢谢您的回答:-)
Pascal MARTIN

9

有些客户可能拒绝使用Google地图,或者对使用Google地图有强烈保留。他们可能会担心Google可能会在不另行通知的情况下引入广告或更改API。但是,Google Maps确实具有与其他Google服务(地标,添加照片,地理编码服务)集成的优势。作为其网络,您始终可以结合许多不同的映射服务和API。


1
+1。我有一些这样的客户。我并不是说他们错了。上次查看时,Google Maps许可条款的确确实允许Google在他们希望的时候向地图引入广告。
MarkJ 2010年

2
此外,通过使用GoogleMaps,您还授予Google永久的,不可撤销的,免版税的全球性许可,以复制,改编和修改您的内容。
MarkJ 2010年

9

我同意所有答案,但是有一个非常重要的观点没有人提及。OpenLayers和Google Maps具有不同的目标。

OpenLayer是显示地理数据的出色框架,但是Google Maps是一个服务池,其中包括显示地理数据的框架以及其他服务。

因此,Google Maps公开了OpenLayes所没有的许多服务和功能。Google Maps功能和服务的一些示例是区域定位,传感器检测(对于具有GPS的设备)和用户定位,地理编码和反向地理编码,街景等。


6

我已经使用了两个API。我为公司制作了一个软件,该软件需要地图,但并非所有客户都拥有GoogleMaps许可证,因此我需要同时支持这两种地图。

我已经做了一个通用的API,用于抽象它们之间的差异,让我告诉您,某些东西比另一种更容易做到。就像限制可以平移地图的范围一样,在OpenLayers中更容易执行此操作,但是热图在GoogleMaps中更易于使用(与可用的OpenLayers插件不同,它是google正式支持的)。

  1. OpenLayers支持离线地图。我的一些用户在没有Internet连接的专用Intranet中。

  2. GoogleMaps有两个绝对必须具有的插件,MarkClusterSpiderfier,使可视化大量标记成为可能。

  3. 与OpenLayers.Popups相比,GoogleMaps InfoWindows更加易于使用并且具有更好的可用性。这些是单击标记时可以打开的小窗口。默认情况下,Googlemaps InfoWindows也更加漂亮,您必须对Popups做一些CSS向导。

  4. GoogleMaps的街景有时会很有用。

  5. GoogleMaps具有您可能需要的更多功能。尽管OpenLayers中也存在许多功能,但并未得到官方支持。

通常最后,您应该选择OpenLayers,因为可以减少来自googlemaps的许可和带宽使用的麻烦。两者都很好地处理了基本映射(即在地图顶部显示标记)。除非您可以从另一项上不存在的特定功能中找到所需的功能,否则应该使用OpenLayers。请参阅有关的GoogleMaps计费和时,你可以免费使用它的更多信息。

另外,GoogleMaps的基本地理位置类型为“ LatLng”,而Openlayers使用“ LonLat”,这使我感到非常困惑,因为我一直在错误地调用函数调用中的参数。


3

除了那些提到速度问题的人,我还要补充一点,即使用具有许多功能的矢量层,IE的VML渲染器会变得非常慢。一位用户提到了200左右。这恰好是我可以在IE放慢到冻结点之前添加的内容。如果添加的功能是文本标签,则可以减少一半,这可能是因为内部每个文本标签都包含两个VML元素。

在Google中,您可以创建一个自定义的GOverlay,其内容为“ div”,该内容可以在IE中呈现而不会出现问题。


3

我将从两个角度添加几件事:客户端使用情况和数据推导。

客户端用法:

  • 您的客户目前习惯使用什么?改变可能很困难。
  • 您真正需要多少功能?OpenLayers有很多功能,但是如果您不使用它...

数据服务:

  • 您在提供KML数据吗?如果是这样,OpenLayers和Google Maps都可以使用它,您可能必须根据客户端的使用情况来决定。

  • 您是否还在提供其他类型的数据服务?(WMS,WFS,CSV等),如果是这样,那么OpenLayers很可能会提供示例和对此的支持。


2

OL拥有庞大的粉丝群,也许是世界上使用最广泛的开源地物。

您不会在此网络环境中看到太多关于它的话题和帖子,因为这里的人们倾向于讨论其他技术,例如JSF和Mobile(非地理),而不是因为OL像struts。

但是Ol有一些缺点,主要是它的级别太低,以至于您必须编写大量代码才能执行常见操作。这也可以很好地工作,因为作为开发人员,a:您已经预先准备了所有代码; b:调整和自定义非常容易。

有更完善的免费geotool,但它们所要做的就是调用openlayers并抽象一些更无聊的琐事。

因此,请放心使用它。它是成熟,强大的,并且在可预见的将来不会消亡。但是,如果要加快开发过程,则应尝试安装在其顶部的其他工具。

祝你今天愉快


嗨,您能详细说明一下OpenLayers上的“更复杂的免费geotools”吗?上面提到了GeoExt,但我还没有看到其他指定的对象。谢谢。
Brian B

@BrianB嗨,布莱恩,当我写“更复杂的免费geotools”时,我正是在考虑geoext。该库将EXTJS与openlayers结合在一起。
魔鬼魔鬼
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.