Google maps GoogleMapApi3-动态隐藏标签

Google maps GoogleMapApi3-动态隐藏标签,google-maps,google-maps-api-3,google-maps-styled,Google Maps,Google Maps Api 3,Google Maps Styled,我正在使用一个样式化的地图-现在我喜欢应用一个按钮来隐藏/显示街道的标签 等等。。。但是当我通过“map.setOptions({styles:MyStylesArrayShowLabel})设置样式时 这会杀死我所有已经放置的标记 …有没有一种方法可以在不破坏标记的情况下快速设置样式 (所有标记[不包括主标记/infowindo]都是通过sql和php从数据库生成的)是的,您必须使用MapTypeId并将样式化的映射与ID关联。然后使用map.setMapTypeId([MapTypeId])

我正在使用一个样式化的地图-现在我喜欢应用一个按钮来隐藏/显示街道的标签

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

…有没有一种方法可以在不破坏标记的情况下快速设置样式


(所有标记[不包括主标记/infowindo]都是通过sql和php从数据库生成的)

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

  • 创建一个新的StyledMapType对象
  • 将样式化映射与MapTypeId关联
  • 将贴图类型设置为“显示”
  • 我已经包括了一个关于的示例,并对您应该注意的3个关键组件进行了评论

    创建新的StyledMapType非常简单,因此我将首先解释StyledMapType与MapTypeID的关联:

    map.mapTypes.set('hide_street_names', hideLabels); 
    
    本质上,这意味着您可以使用mapTypeID引用
    hideLabels
    styledmap,在本例中是
    hide\u street\u name
    ——与使用
    google.maps.mapTypeID.ROADMAP
    google.maps.mapTypeID.TERRAIN
    等类似

    然后,通过设置地图的MapTypeId,在单击操作上切换MapTypeId(或以您当前控制它的方式),即可触发您的样式:

    map.setMapTypeId('hide_street_names');
    
    您会注意到,我通过使用-
    map.setMapTypeId(google.maps.mapTypeID.ROADMAP)将mapTypeID更改回路线图,从而恢复到默认视图