OpenLayers与Google Maps?[关闭]

2020/10/24 07:21 · javascript ·  · 0评论

我曾经使用过Google Maps两次,但是对OpenLayers感到好奇

在开始任何形式的编码之前,我想到了两个问题,

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

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

    • 搭配使用JavaScript框架又如何呢?我已经看到它正在使用Prototype,并且我知道Prototype,所以就可以了。但是,使用诸如MooTools之类的东西呢?(与原型,BTW不兼容)
    • 是否存在任何与速度和性能相关的问题?我需要我的应用程序具有响应能力,不能等待数小时才能显示地图。
  • 是否有可用于许多地方的地图,或者缺少很多地图?

    • 也就是说,我在法国,需要我的应用程序才能至少在大城市工作……可以吗?
    • 如果不是,是否容易找到OpenLayers的图层和可视化并将其集成?
  • 有没有显示道路的API?

    • 例如,显示仅单向的道路。
    • 如果是,我该怎么做?我是否需要某种包含这些道路信息的文件,然后自己在地图上显示它们?
  • 您知道OpenLayers的任何好教程吗?

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

这是一个非常好的问题!我是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上讨论!

这不一定是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服务访问

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. GoogleMaps有两个绝对必须具有的插件,MarkCluster
    Spiderfier,可以可视化大量标记。

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

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

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

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

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

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

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

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

客户端用法:

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

数据服务:

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

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

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

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

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

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

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

祝你今天愉快

本文地址:http://javascript.askforanswer.com/openlayersyugoogle-mapsguanbi.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!