0

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

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

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

(所有标记 [不包括主标记/信息窗口] 都是通过 sql 和 php 从 db 生成的)

4

1 回答 1

1

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

  1. 创建一个新的 StyledMapType 对象
  2. 将样式化地图与 MapTypeId 关联
  3. 将 MapType 设置为显示

我在jsfiddle上包含了一个示例,其中包含对您应该注意的 3 个关键组件的注释。

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

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

从本质上讲,这意味着您可以使用 mapTypeID 引用您hideLabels的 styledmap,在这种情况下,它hide_street_names就像您使用google.maps.MapTypeId.ROADMAPorgoogle.maps.MapTypeId.TERRAIN等​​一样。

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

map.setMapTypeId('hide_street_names');

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

于 2012-10-23T21:06:20.263 回答