google-maps - 自定义叠加 map 类型和 mapTypeControl

标签 google-maps google-maps-api-3

我已成功将 OSM 作为新的基础 map 类型添加到我的 Google Maps API 应用程序中。

接下来我添加了一个新的叠加 map 类型,它向 map 添加了山体阴影。 关于叠加 map 类型的文档 https://developers.google.com/maps/documentation/javascript/maptypes?hl=en#OverlayMapTypes说:

“[...]您可以将 map 类型添加到现有的 MapType[...]”

“叠加 map 类型将显示在它们附加到的任何基础 map 之上。”

并且 “除了我们在 ROADMAP map 类型之上创建了一个图 block 叠加层 MapType 之外,以下示例与上一个示例相同:”

但在代码示例中,叠加 map 类型始终显示在您选择的任一 map 类型上。

  1. 如何使我的山体阴影叠加 map 类型仅显示在 map 类型“roadmap”和我的自定义“OSM” map 类型上? 编辑: 更准确地说:实际上我想知道,是否有一种方法可以像上面的文档建议的那样自动执行此操作。我知道如何通过监听 maptypeid_changed 事件手动执行此操作。

  2. 有没有办法将我的叠加 map 类型作为复选框添加到 mapTypeControl,就像在默认卫星 map 类型上使用“标签”或在路线图 map 类型上使用“地形”一样? 编辑: 直到几天前,上面的官方文档提出了一种方法来执行此操作,但没有准确描述它并且链接示例已损坏(404-link)。您的用户在这里发现了同样的问题:Google maps api: Customising the MapTypeControl for separate map overlays

编辑: 我在下面发布了我当前解决方案的 jsFiddl。

最佳答案

好吧,看起来没有本地方法可以将叠加 map 类型绑定(bind)到基础 map 类型或使用 Google 的 map 类型控件来控制叠加 map 类型。

为了解决这个问题,我最终做了以下工作: http://jsfiddle.net/lejared/720L7wu0/3/

var ReliefCtrl = {/* see fiddle */};

我构建了一个自定义控件(具有原生 Google map 控件的外观)。此控件切换我的叠加 map 类型(山体阴影)。您可以定义一组适合此叠加 map 类型的基础 map 类型。如果选择了合适的 basemap 类型,该控件将自动显示/隐藏自身。

2017-02-01:更新 fiddle 以匹配 googles map 控件的新原生外观。

关于google-maps - 自定义叠加 map 类型和 mapTypeControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12013695/

相关文章:

android - 如何在我的应用程序中使用 Google map 搜索功能 api?

graphics - 更改 Google map 信息窗口关闭图标

jquery - 如何在隐藏元素中加载 Google Maps map

c# - 在 Google map Controller 中关联列表负载?

swift - 由于 "found nil"解开网址,无法从 GoogleMaps 获取路线

Android 谷歌地图 CameraUpdateFactory 未初始化

javascript - 在谷歌地图 v3 上更改多段线描边颜色

google-maps - 混合 map 类型图 block 的 Google map 图 block URL?

javascript - 打印带有方向的谷歌地图

javascript - jquery 每个如果值存在则追加到前一个值