在早期版本的地图3 api上,我构建了一些“叠加”功能,使用自定义地图类型执行以下操作 - 我的想法是,相对于始终在谷歌的磁贴上提供我的磁贴,我只会在需要时显示谷歌的图块 - 即当图块在我的缩放和边界之外时,或者当我的图块具有透明度时(主要是由于我的叠加的外边界可能跟随河流等)。它的工作原理如下:
在我的类型上调用getTile
时,请确定是否应该为给定级别提供给定的磁贴。
如果我应该为瓷砖提供服务,请确定该瓷砖是否具有任何透明度 - 如果是,请使用
从默认地图获取瓷砖map.mapTypes.get(google.maps.MapTypeId.ROADMAP).getTile(coord, zoom, ownerDocument)`
然后将我的图像追加到返回的div的顶部并显示该图像。否则,只需服务我的瓷砖。
如果我不应该提供服务,请回复
map.mapTypes.get(google.maps.MapTypeId.ROADMAP).getTile(coord, zoom, ownerDocument)
所以,似乎由于某些盗窃,getTile不再返回google的原生地图类型上的任何内容,这会带来两个问题:
有没有办法让我告诉地图它应该将我的瓷砖显示为叠加而不是完整的瓷砖而不必将我的整个地图叠加?
有没有办法告诉地图它应该显示自己的瓷砖而不是我的?
叠加图可以作为一种解决方案,但性能不是很好,因为谷歌首先绘制自己的图块然后用我的图块覆盖它们,所以会有相当多的重绘。由于99%的瓷砖都是完整的覆盖层(没有透明度),这似乎是浪费带宽。如果能够从getTile传回元数据,指示是否应该绘制默认的谷歌图块(或者在某些其他回调中指示该事实),那将是很棒的。我以前看起来像一个优雅的解决方案并且表现良好 - 叠加方法肯定是后退一步。马塞洛,我不确定我的头衔是如何反映我的问题的...你读过这个问题的全文了吗?
答案 0 :(得分:0)
您无法访问基本地图类型。由于持续滥用,谷歌故意禁用它。
在某些时候,这被报告为错误,但您可以在this thread上阅读地图小组成员的评论:
从该页面引用:
作者:Thor Mitchell(Google员工 - 地图团队)不幸的是,我们发现了越来越多的开发者案例 使用默认地图类型来访问和使用Google地图图块 在google.maps.Map对象之外,这是不允许的 服务条款。因此我们被迫移动内部地图 类型到私人注册表。如果您有特殊需要的原因 访问符合服务条款的地图类型, 请用您的用例更新此问题,如果有 有足够的需求,我们将研究是否可以提供 可满足您需求的可支持解决方案。