0

在 maps 3 api 的早期版本中,我构建了一些“叠加”功能来使用自定义地图类型执行以下操作 - 其想法是,与始终在 google 的图块上提供我的图块相反,我只会显示 google 的图块需要时——即当图块在我的缩放和边界之外或当我的图块具有透明度时(主要是因为我的叠加层的外部边界可能跟随河流等)。它是这样工作的:

  1. getTile我的类型被调用时,确定我是否应该为给定级别提供给定的瓷砖。

  2. 如果我应该提供瓷砖,请确定瓷砖是否有任何透明度 - 如果有,请使用默认地图获取瓷砖

    map.mapTypes.get(google.maps.MapTypeId.ROADMAP).getTile(coord, zoom, ownerDocument)`
    

    然后将我的图像附加到返回的 div 的顶部并显示它。否则,就为我的瓷砖服务。

  3. 如果我不应该服务,瓷砖,就回来

    map.mapTypes.get(google.maps.MapTypeId.ROADMAP).getTile(coord, zoom, ownerDocument)
    

因此,似乎由于一些盗窃行为,getTile 不再返回谷歌原生地图类型的任何内容,这带来了两个问题:

  1. 我有什么方法可以告诉地图它应该将我的图块显示为覆盖图而不是完整的图块,而不必让我的整个地图成为覆盖图?

  2. 有没有办法告诉地图它应该显示自己的图块而不是我的图块?


覆盖地图作为一种解决方案工作,但性能不是很好,有很多重绘,因为谷歌首先绘制自己的瓷砖,然后用我的覆盖它们。由于我 99% 的图块是完全覆盖的(没有透明度),这似乎是对带宽的相当浪费。如果能够从 getTile 传回元数据,指示是否应该绘制默认的谷歌图块(或在其他回调中指示该事实),那就太好了。我以前看起来像是一个优雅的解决方案并且表现良好 - 覆盖方法绝对是退一步。Marcelo,我不确定我的标题是否反映了我的问题……您是否阅读了该问题的完整文本?

4

1 回答 1

0

您无法访问基本地图类型。由于持续滥用,它已被 Google 故意禁用。

在某些时候,这被报告为一个错误,但您可以阅读地图团队成员在此线程上的评论:

从该页面引用:

不幸的是,我们发现越来越多的开发人员使用默认地图类型来访问和使用 google.maps.Map 对象之外的 Google 地图图块,这是服务条款不允许的。因此,我们被迫将内部地图类型移动到私有注册表。如果您有特定原因需要访问符合服务条款的地图类型,请使用您的用例更新此问题,如果有足够的需求,我们将研究是否可以为您的要求提供可支持的解决方案.

作者:Thor Mitchell(Google 员工 - 地图团队)

于 2012-11-09T07:47:54.533 回答