GoogleMapApi3 - 即时隐藏标签

时间:2012-10-23 18:21:39

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

我正在使用风格的地图 - 现在我想应用按钮隐藏/显示街道标签

等......但是当我通过" map.setOptions({styles:MyStylesArrayShowLabel})设置样式时," 杀死我已经放置的所有标记....

...有没有办法在不破坏标记的情况下动态设置样式?

(所有标记[排除主标记/ infowindo]都是通过sql和php从db生成的)

1 个答案:

答案 0 :(得分:1)

是的,您必须使用MapTypeIds并将样式化地图与ID相关联。然后使用map.setMapTypeId([MapTypeId])而不是map.setOptions([options])动态更改地图样式。我建议您快速阅读Styled Maps doc以供参考。但基本上你需要注意的是三件事:

  1. 创建新的StyledMapType对象
  2. 将样式化地图与MapTypeId
  3. 相关联
  4. 将MapType设置为显示
  5. 我在jsfiddle上添加了一个示例,其中包含您应注意的3个关键组件的注释。

    创建新的StyledMapType非常简单,所以我首先解释一下StyledMapType与MapTypeID的关联:

    map.mapTypes.set('hide_street_names', hideLabels); 
    

    基本上这意味着您可以使用mapTypeID引用hideLabels样式化地图,在本例中为hide_street_names - 与google.maps.MapTypeId.ROADMAPgoogle.maps.MapTypeId.TERRAIN等相似。

    然后通过设置地图的MapTypeId,通过在点击操作上切换MapTypeId(或者您当前控制它)来触发您的风格:

    map.setMapTypeId('hide_street_names');
    

    您会注意到我将mapTypeID更改回ROADMAP并恢复为默认视图 - map.setMapTypeId(google.maps.MapTypeId.ROADMAP);