Google maps 谷歌地图:如何在覆盖图上绘制标签(国家、城市名称等)

Google maps 谷歌地图:如何在覆盖图上绘制标签(国家、城市名称等),google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,我需要在谷歌地图上画一些图形。图形并不总是透明的,所以我希望在图形上绘制文本标签(国家名称、城市名称等) 对于我使用的图形,它显示在底图上。但我没能在上面画上标签 我猜应该有一种方法可以用不同的样式设置绘制两次底图(所以我用不带标签的样式绘制地图,然后用带标签的路线图进行叠加),但似乎我不能使用基本地图类型作为叠加类型。我看到的另一种方法是仅通过组合URL手动获取带有标签的平铺。这是可行的,但据我所知,ToS禁止直接访问地图分幅 有没有一种有效的、合法的方法可以做到这一点 下面是JSFIDLE,

我需要在谷歌地图上画一些图形。图形并不总是透明的,所以我希望在图形上绘制文本标签(国家名称、城市名称等)

对于我使用的图形,它显示在底图上。但我没能在上面画上标签

我猜应该有一种方法可以用不同的样式设置绘制两次底图(所以我用不带标签的样式绘制地图,然后用带标签的路线图进行叠加),但似乎我不能使用基本地图类型作为叠加类型。我看到的另一种方法是仅通过组合URL手动获取带有标签的平铺。这是可行的,但据我所知,ToS禁止直接访问地图分幅

有没有一种有效的、合法的方法可以做到这一点

下面是JSFIDLE,它演示了URL组合解决方案:

您可能需要检查:

此库允许将文本添加到地图的特定位置。请注意,用户的浏览器必须支持画布才能显示标签

地图标签类

  • 这个类扩展了

请注意,显示标签需要浏览器
支持。分析

资料来源:


希望这有帮助

我发现
StyledMapType
可以用作叠加贴图类型(具有相同的接口),因此我创建了仅带标签的
StyledMapType
,而不是在贴图类型注册表中注册,只是将其添加为叠加,方法如下:

var onlyLabels = new google.maps.StyledMapType([...], {name: 'labels'});
//draw useful data over map
map.overlayMapTypes.insertAt(0, new UsefulDataOverlay());
//and then draw labels over it
map.overlayMapTypes.insertAt(1, onlyLabels);

完整的工作示例如下:

谢谢您的建议,但我需要现有的谷歌地图标签(国家、城市、海洋等的名称)。
var onlyLabels = new google.maps.StyledMapType([...], {name: 'labels'});
//draw useful data over map
map.overlayMapTypes.insertAt(0, new UsefulDataOverlay());
//and then draw labels over it
map.overlayMapTypes.insertAt(1, onlyLabels);