OpenLayers对谷歌地图?

Pas*_*TIN 169 javascript google-maps openlayers

我曾经多次使用谷歌地图,但对OpenLayers感到疑惑.
在开始任何编码之前,我想到了几个问题,

  • 为什么我要使用OpenLayers而不是谷歌地图?
    • 无论如何,除了OSS许可证
    • 您是否遇到过绝对不推荐使用OpenLayers的情况?
    • 在Stack Overflow上搜索了"OpenLayers" ; 答案不多.这是否意味着这个解决方案使用不多?对于项目的长期可行性,这可能是一个问题吗?
  • 对于那些已经使用过OpenLayers的人:我可能会遇到任何常见的陷阱/问题吗?
    • 用它来使用JavaScript框架怎么样?我已经看到它正在使用Prototype,我知道Prototype,所以这样就行了.但是如何使用像MooTools这样的东西呢?(与Prototype,BTW不兼容)
    • 有任何速度和性能相关的问题吗?我需要我的应用程序响应,不能等待数小时才能显示地图.
  • 有许多地方可以使用地图,还是有很多地方缺失?
    • 也就是说,我在法国,需要我的申请至少在大城市工作......这样可以吗?
    • 如果没有,是否很容易找到OpenLayers的图层和可视化并集成它们?
  • 是否有任何类型的API来显示道路?
    • 例如,显示仅单向的道路.
    • 如果是的话,我该怎么做?我是否必须拥有包含这些道路信息的某种文件,然后自己在地图上显示它们?
  • 你知道OpenLayers有什么好的教程吗?

我还没有尝试过,那些只是出了问题......

ato*_*gle 158

这些都是非常棒的问题!我是OpenLayers的专业开发人员和粉丝,因此我将从这个角度解决您的问题.

为什么我要使用OpenLayers而不是谷歌地图?

  • 灵活性:您不依赖于任何特定的地图提供商或技术.您可以随时更改,而无需重写整个代码.谷歌,雅虎,微软,WMS,ArcGIS Server,MapServer等都支持开箱即用.
  • 矢量支持:更好地支持点,折线和多边形.
  • 控制:您可以添加可能需要的任何新功能.我亲自为OpenLayers编写了三个插件,其中两个是或将成为源代码的一部分.
  • 调试:当你可以逐步完成源代码时,更容易调试!

我根本不担心项目的长期可行性.它是首要的开源客户端映射库.

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

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

JavaScript框架兼容性

  • 我将jQuery框架用于我的所有工作,而我唯一遇到的问题是在OpenLayers之后引用jQuery.除此之外,它一帆风顺.
  • 表现很棒!唯一的问题是地图服务器或向地图添加太多矢量.

有很多地方可以使用地图吗?

  • 就像我说的,你可以在世界任何地方使用几乎所有来源的底图.

是否有任何类型的API来显示道路?

你知道OpenLayers有什么好的教程吗?

我希望这很有用.如果您有任何问题,我会在Stack Overflow附近!

  • 嗨!非常感谢这个答案,这确实很有用!肯定有一些有趣的观点(更好的矢量支持可能对我正在考虑的项目有用;并且它不是你说的唯一有趣的东西!); 也许我会在某个时候问一些其他的问题:我还没有开始和OL一起工作(这个问题相当于一个"prelimar"一个^^),但是考虑到我得到的答案,我想,时间会到来! (5认同)
  • +1.我试过不输入这个评论,但我无法自拔.WGS84不是投影.(值得尝试学习这些东西 - 我很痛苦地学习了一些GIS,它真的有助于地图的东西.) (5认同)

Nil*_*der 35

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

为何选择OpenLayers?

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

陷阱

  • 如果要使用来自其他服务器的矢量(WFS)数据,则需要代理,因为跨站点脚本限制

性能

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

JavaScript框架

  • 看看GeoExt,例如ExtJS + OpenLayers

可用的地图

  • OpenLayers没有附带地图后端.您可以使用谷歌地图,雅虎地图,MS虚拟地球等,或任何WMS和WFS服务yuo进行访问


Der*_*ley 23

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

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


nra*_*itz 13

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

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

  • 您无法合法(或实际)将Google API用于离线应用程序(即,从您自己的计算机上提供切片的位置).即使没有法律限制,谷歌在技术上也非常困难,而OpenLayers则很容易.

  • 如果您要显示包含令人反感的内容的地图,Google保留关闭API访问权的权利.常见问题解答中给出的例子是非法药物的地图,它可以很好地理解这种限制可能涵盖的灰色区域.

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

尽管如此,作为最近开始使用OpenLayers的长期谷歌地图开发人员,我觉得谷歌地图拥有更好的文档,更大的用户社区,以及比OpenLayers更清晰,更稳定的API.所以你必须在某个地方进行权衡.


And*_*yer 12

这实际上取决于你想要使用地图的内容.要在地图上简单地绘制点,Google地图就可以了.Google地图的地图图层也非常详细.另一方面,OpenLayers提供了更多的功能,并且非常易于扩展.

OpenLayers有很多例子可以帮助您入门.

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


geo*_*ika 9

有些客户可能会拒绝或强烈保留使用Google地图.他们可能有一些有效的担忧,谷歌可能会引入广告或更改API而不另行通知.但是,Google地图确实可以与其他Google服务(地标,添加照片,地理编码服务)集成.作为Web,您始终可以组合许多不同的地图服务和API.

  • 此外,通过使用GoogleMaps,您可以授予Google永久,不可撤销,免版税的全球许可,以复制,修改和修改您的内容. (2认同)

ang*_*era 9

我同意所有的答案,但有一个非常重要的一点,没有人提到.OpenLayers和Google Maps有不同的目标.

OpenLayer是一个显示地理数据的优秀框架,但Google地图是一个服务池,包括一个在其他服务中显示地理数据的框架.

因此,Google地图提供了许多OpenLayes所没有的服务和功能.Google地图功能和服务的一些示例包括区域本地化,传感器检测(适用于带GPS的设备)和用户本地化,地理编码和反向地理编码,街景等.


Hof*_*ann 6

我使用过这两种API.我为公司制作软件,这个软件需要映射,但并非所有客户都拥有GoogleMaps许可证,所以我需要支持这两种类型的地图.

我已经制作了一个通用的API来抽象它们之间的差异,让我告诉你,有些东西比其他东西更容易做.就像限制你可以平移地图的范围一样,在OpenLayers中做起来容易得多,但是热图在GoogleMaps上更容易使用(谷歌正式支持它,与可用的OpenLayers插件不同).

  1. OpenLayers支持离线地图.我的一些用户在没有互联网连接的私人内部网中.

  2. GoogleMaps有两个绝对必须拥有的插件,MarkClusterSpiderfier,可以显示大量的标记.

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

  4. GoogleMaps有街景,有时很有用.

  5. GoogleMaps拥有您可能需要的更多功能.虽然OpenLayers中也存在许多功能,但尚未得到官方支持.

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

另外GoogleMaps的基本地理定位类型为'LatLng',而Openlayers使用'LonLat',这让我感到疯狂,因为我一直误认为函数调用中的参数顺序.