OpenLayers vs Google Maps?[已关闭]

2022-08-30 02:04:07

我使用过几次谷歌地图,但对OpenLayers有什么好奇。
在开始任何类型的编码之前,我想到这里有几个问题,

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

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


答案 1

这些都是一个非常好的问题!我是一名专业的OpenLayers开发人员和粉丝,所以我将从这个角度回答你的问题。

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

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

我一点也不担心项目的长期可行性。它是首屈一指的开源客户端映射库。

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

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

JavaScript Framework Compatibility

  • 我使用jQuery框架来完成我的所有工作,我遇到的唯一问题是在OpenLayers之后引用jQuery。除此之外,一帆风顺。
  • 性能很棒!唯一的问题是地图服务器或向地图添加过多矢量。

是否有许多地方的地图?

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

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

  • 我会看看CloudMade!已将 OpenStreetMap 项目转换为地图切片服务,并允许自定义样式。我相信您可以以特定方式(根据您的示例)设置单向街道的样式。CloudMade Developer Zone

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

  • 我不知道任何教程,但OpenLayers示例中有很多示例

我希望这是有用的。如果你有任何问题,我就在Stack Overflow周围!


答案 2

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

为什么选择 OpenLayers?

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

陷阱

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

性能

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

JavaScript 框架

  • 看看GeoExt,例如ExtJS + OpenLayers。

可用地图

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