我正在使用风格的地图 - 现在我想应用按钮隐藏/显示街道标签
等......但是当我通过" map.setOptions({styles:MyStylesArrayShowLabel})设置样式时," 杀死我已经放置的所有标记....
...有没有办法在不破坏标记的情况下动态设置样式?
(所有标记[排除主标记/ infowindo]都是通过sql和php从db生成的)
答案 0 :(得分:1)
是的,您必须使用MapTypeIds
并将样式化地图与ID相关联。然后使用map.setMapTypeId([MapTypeId])
而不是map.setOptions([options])
动态更改地图样式。我建议您快速阅读Styled Maps doc以供参考。但基本上你需要注意的是三件事:
我在jsfiddle上添加了一个示例,其中包含您应注意的3个关键组件的注释。
创建新的StyledMapType非常简单,所以我首先解释一下StyledMapType与MapTypeID的关联:
map.mapTypes.set('hide_street_names', hideLabels);
基本上这意味着您可以使用mapTypeID引用hideLabels
样式化地图,在本例中为hide_street_names
- 与google.maps.MapTypeId.ROADMAP
或google.maps.MapTypeId.TERRAIN
等相似。
然后通过设置地图的MapTypeId,通过在点击操作上切换MapTypeId(或者您当前控制它)来触发您的风格:
map.setMapTypeId('hide_street_names');
您会注意到我将mapTypeID更改回ROADMAP并恢复为默认视图 - map.setMapTypeId(google.maps.MapTypeId.ROADMAP);