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