【问题标题】:custom maptype with more than one layers具有多个图层的自定义地图类型
【发布时间】:2013-07-12 02:11:50
【问题描述】:

我正在使用 google map v3 javascript api,并尝试根据google.develper 的指南创建自定义地图类型。

但是我发现地图类型只提供一个图层,而我的自定义地图类型应该提供两个图层,就像 google.maps.MapTypeId.HYBRID 包含两个图层 - SATELLITEPlacenames

所以我想知道这是否可能?

BWT,我有关于地图类型和图层的问题here

好像地图类型是由图层组成的,是这样吗?


其实我的第一个问题是Michael Geary解决的。

但是,我现在遇到了新问题,因为它仍然与自定义地图类型有关,所以我更新了这篇文章而不是创建一个新问题。

第二季度:

如果我有多个图层,maptypecontrol 怎么样?

如您所见,google.maps.mapTypeId.HYBRID 有两层——卫星和标签。

所以在地图类型控件中你会发现:

注意Labels 复选框。

现在我的自定义地图类型有两个图层--baselabels,如何使labels 图层可以切换?

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    自定义地图类型为每个图块定义一个 DOM 元素,as described here。该 DOM 元素不仅限于单个图像。您可以拥有一个<div>,其中嵌套了任意数量的图像和其他元素。

    混合地图类型是用这种方法实现的。这是 Chrome DOM 检查器的屏幕截图,显示了混合卫星视图中的单个地图图块:

    如您所见,<div> 有两个 <img> 子代。第一个来自khms0.googleapis.com,是基础卫星平铺图像。第二个,由mts0.googleapis.com 提供,是具有透明背景的标签和边框覆盖图块。就 Maps API 而言,这只是一种地图类型:API 只知道容器 <div>,而不知道其中的图像。

    文档Base Map Types 部分中的base map example 说明了将<div> 元素用作地图图块。您可以以此为起点,在 <div> 中添加您的 <img> 磁贴。

    【讨论】:

    • 太棒了!。我从来没有发现这个。这意味着我可以覆盖google.maps.MapType 而不是google.maps.ImageMapType,然后手动创建图块(dom 元素)?顺便说一句,图层怎么样?
    • 没错,您将使用基础MapTypeImageMapType 仅适用于每个图块都有一个图像的简单情况。我认为您在另一个问题中询问的“层”是Overlay Map Types。这是一个透明层 MapType,您希望在基本 MapType 上应用。它是一个单独的 MapType,因此可以应用于不同类型的基本地图。这与混合地图等具有内部图层的单一地图类型不同。
    • 虽然我说的是layers,但我不是指overlay maptypes,我指的是Layers (developers.google.com/maps/documentation/javascript/…)。既然这些图层看起来都是由瓦片组成的,那么图层和叠加图类型有什么区别呢?
    • 它们非常相似,只是到达那里的两种不同方式。您可以创建自己的 OverlayLayer,它与预定义的 Layers 非常相似——它不是 MapType,但它可以以与 Overlay Map Type 类似的方式覆盖在任何基本地图之上,只是不使用完全相同的 API 调用.
    • 也就是说,如果我想创建类似 trafficLayer 的东西,我必须覆盖 maptype?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 2015-05-10
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多