我有与 bing 地图集成的 openlayers。我想用 google 地图而不是 bing 地图来转换当前系统。我使用 bing 地图进行旅程规划、绘制形状、搜索位置、添加注释、添加图层等。
我也可以使用谷歌地图来实现上述功能吗?
这个问题之前已经被问过,但有些答案过于负面,主要是由于 OpenLayers 示例非常糟糕。
与 Bing 不同,Google 不允许在 Openlayers 中直接使用其地图图块,并且您不能在 Google 地图 API 中使用 OpenLayers 代码,因此您需要重写其中的大部分代码。
但是,可以使用 JavaScript 将 Openlayers 地图和控件放置在 Google 地图之上。 OpenLayers 制作了一个非常糟糕的示例来说明如何使用 OpenLayers 3 做到这一点,随后将其删除。 这是在 OpenLayers 4 中运行的副本 http://bl.ocks.org/ThomasG77/21192c7045ab8f50e22e 当地图缩放时,两个图层显然严重不同步。 然而,通过在 Google 地图赶上时暂时隐藏上面的 OpenLayers 图层和/或最小化 OpenLayers 缩放持续时间以减少赶上时间,可以显着改善体验。 另外还有一些小问题,例如重置 OpenLayers 字体大小,使其不会继承底层 Google 地图的较小尺寸,以及隐藏或重新定位两组属性以避免一组属性遮挡另一组属性,这些也改善了体验。 谷歌还有一个选项可以禁用缩放动画,但该选项已不再可用。
这是使用这些调整运行的修订示例http://mikenunn.16mb.com/demo/ol5-google-demo.htm它使用图层切换器,因此您可以比较缩放半透明地质图层时的效果一个普通的 OpenLayers OSM 层和一个底层的 Google 地图。 如果您已经拥有大量 OpenLayers 代码并且偶尔需要在 Google 背景下使用,那么值得考虑。
现在可以了(在 OL 10.3.1 中撰写本文时,但我不知道它是在哪个版本中引入的)。参考 https://openlayers.org/en/latest/examples/google.html 和 https://openlayers.org/en/latest/apidoc//module-ol_source_Google-Google.html