首页 文章

OpenLayers对谷歌 Map ? [关闭]

提问于
浏览
164

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

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

  • 无论如何,除了OSS许可证

  • 您是否遇到过绝对不推荐使用OpenLayers的情况?

  • 我做了search about "OpenLayers" on Stack Overflow;答案不多 . 这是否意味着这个解决方案使用不多?对于项目的长期可行性,这可能是一个问题吗?

  • 对于那些已经使用过OpenLayers的人:我可能会遇到任何常见的陷阱/问题吗?

  • 如何使用JavaScript框架呢?我've seen it'使用Prototype,我知道Prototype,所以没关系 . 但是如何使用像MooTools这样的东西呢? (与Prototype,BTW不兼容)

  • 有任何与速度和性能相关的问题吗?我需要我的应用程序响应,不能等待数小时才能显示 Map .

  • 有很多地方可以使用 Map ,还是有很多地方缺失?

  • 也就是说,我在法国,需要我的申请至少在大城市工作......这样可以吗?

  • 如果没有,是否很容易找到OpenLayers的图层和可视化并集成它们?

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

  • 例如,显示仅单向的道路 .

  • 如果是,我该怎么做?我是否必须拥有包含这些道路信息的某种文件,然后自己在 Map 上显示它们?

  • 你对OpenLayers有什么好的教程吗?

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

11 回答

  • 12

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

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

    • 灵活性:您不依赖于任何特定的 Map 提供者或技术 . 您可以随时更改,而无需重写整个代码 . 谷歌,雅虎,微软,WMS,ArcGIS Server,MapServer等都支持开箱即用 .

    • 矢量支持:更好地支持点,折线和多边形 .

    • 控制:您可以添加可能需要的任何新功能 . 我亲自为OpenLayers编写了三个插件,其中两个是或将成为源代码的一部分 .

    • 调试:当你可以逐步完成源代码时,更容易调试!

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

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

    • 我遇到的最大陷阱是使用Web Mercator(谷歌)投影 . 将使用谷歌,雅虎和微软基本 Map 的常见和真实投影中的矢量数据显示在OpenLayers Map 中可能会很麻烦 . 这些例子是你的朋友 .

    JavaScript框架兼容性

    • 我将jQuery框架用于我的所有工作,而且我唯一的问题就是顺利航行 .

    • 表现很棒!唯一的问题是 Map 服务器或向 Map 添加太多矢量 .

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

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

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

    • 我看看CloudMade!已将OpenStreetMap项目转换为 Map 图块服务并允许自定义样式 . 我相信你可以用特定的方式设计单行道(按照你的例子) . The CloudMade Developer Zone .

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

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

  • 9

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

    为何选择OpenLayers?

    • OpenLayers可以组合来自不同来源的 Map (谷歌 Map 背景,WMS叠加,来自KML或GML文件的矢量数据或WFS等)

    • 您可以为OpenLayers设置比Google Maps更多的样式

    • 开源,可以在调试时查看源代码

    • 如果您需要高精度的 Map ,请使用OpenLayers和合适的 Map 服务器后端而不是Google Map 来获取更好的 Map 投影(谷歌 Map 假设地球是一个完美的球体)

    陷阱

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

    性能

    • 主要取决于 Map 后端的速度

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

    JavaScript框架

    • 例如,查看GeoExt,即ExtJS OpenLayers

    可用的 Map

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

    我没有't seen much of a presence from OpenLayers users on SO but they'在那里 . OpenLayers mailing lists非常活跃(我在UsersDev,每天看到50-100封电子邮件,讨论各种事情 . 你也可以从这些链接中搜索列表 . ) .

    我可以't answer all your questions but one thing I' ll推出那里有OpenLayers和谷歌 Map 不是互斥的 . OpenLayers是一个JavaScript库,您可以使用它与谷歌 Map 进行交互 . 看看这个例子:OpenLayers using google maps . 这是主要的OpenLayers examples page .

  • 6

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

    • 您可以't legally use a Google map solely in a section of your site that requires payment to access, or for a private site that the public can' t注册(例如公司内部网) . (IANAL,但见Terms of Service, 9.1the FAQ

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

    • 如果您要显示包含令人反感的内容的 Map ,Google保留关闭API访问权的权利 . The example given in the FAQ是非法药物的 Map ,可以很好地了解这种限制可能涵盖的灰色区域 .

    有关详细信息,请参阅this FAQTerms of Service .

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

  • 13

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

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

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

  • 36

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

  • 8

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

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

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

  • 3

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

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

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

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

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

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

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

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

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

  • 154

    除了那些提到速度问题的人之外,我想补充一点,IE的VML渲染器可以通过具有许多功能的矢量图层变得非常慢 . 一个用户提到了大约200个 . 这正是我在IE减速到相当冻结之前可以添加的内容 . 如果添加文本标签的功能,则可以减少一半,这可能是因为内部每个文本标签都包含两个VML元素 .

    在Google中,您可以创建一个自定义的GOverlay,其内容为“div”,在IE中可以毫无问题地呈现 .

  • 2

    我将从两个角度添加一些内容:客户端使用和数据挖掘 .

    客户用法:

    • 您当前习惯使用的是什么?改变可能很困难 .

    • 您真正需要多少功能? OpenLayers有很多,但如果你不使用它...

    数据服务:

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

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

  • 3

    OL拥有庞大的粉丝群,可能是世界上使用最多的Opensource geothing .

    你在这个网络平台上看不到那么多关于它的帖子和帖子,因为这里的人们倾向于讨论其他类型的技术,比如JSF和Mobile(非geo),而不是因为OL就像struts .

    但是Ol有一些缺点,主要是因为它的级别很低,所以你必须编写大量的代码才能进行常见操作 . 这也可以以良好的方式工作,因为作为开发人员:您拥有所有代码并且b:调整和定制非常简单 .

    有更复杂的免费geotools,但他们所做的只是打开openlayers并抽象一些更无聊的家务 .

    所以要自信地使用它 . 它成熟,强大,并且在可预见的未来不会死亡 . 但是,如果您想加快开发过程,您应该尝试安装在其中的其他工具 .

    祝你今天愉快

相关问题