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