google-maps - 我可以将 google map/api 与 openlayers 集成吗?
问题描述
我有与 bing 地图集成的 openlayers。我也想用谷歌地图而不是 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 层和底层谷歌地图。如果您已经有很多 OpenLayers 代码,您可能偶尔希望在 Google 背景下使用这些代码,那么值得考虑。
推荐阅读
- jquery - 有没有办法在粘性标题下方设置边距,以便滚动内容不会触及标题底部边缘?
- javascript - Fullcalendar 3 更改周时更改可拖动事件
- string - Pandas - 使用搜索通过每个单元格中的字符串值进行修改
- php - Config.ini 是存储数据库凭据的最佳位置
- docker - gitlab-ci 如何在内部与 gitlab runner 一起工作?
- json - 我可以在 jq 中获得 argmax 吗?
- ios - 控制可以发送到不同类中的函数的参数值
- docker - Microsoft 映像的 Docker 注册表镜像不起作用
- javascript - 如何将对象字符串值更改为数字
- python - 通过 subprocess.Popen 或 subprocess.run 运行 cmake 命令