標籤我使用的是風格的地圖 - 現在我想申請一個按鈕隱藏/顯示街道GoogleMapApi3 - 隱藏在飛行
等標籤......但是當我通過「地圖設置的樣式。 setOptions({styles:MyStylesArrayShowLabel});「 ,它會殺死我已經放置的所有標記....
...有沒有一種方法可以在不破壞標記的情況下即時設置樣式?
(所有標記[豁家庭標記/ infowindo]從通過SQL和PHP中的數據庫生成)
標籤我使用的是風格的地圖 - 現在我想申請一個按鈕隱藏/顯示街道GoogleMapApi3 - 隱藏在飛行
等標籤......但是當我通過「地圖設置的樣式。 setOptions({styles:MyStylesArrayShowLabel});「 ,它會殺死我已經放置的所有標記....
...有沒有一種方法可以在不破壞標記的情況下即時設置樣式?
(所有標記[豁家庭標記/ infowindo]從通過SQL和PHP中的數據庫生成)
是有,你必須利用MapTypeIds
和樣式化地圖的ID相關聯。然後使用map.setMapTypeId([MapTypeId])
而不是map.setOptions([options])
即時更改您的地圖樣式。我建議快速閱讀Styled Maps doc以供參考。但本質上,你必須採取注意到的是三兩件事:
我關聯的樣式化地圖在jsfiddle中包含了一個示例,並對您應該注意的3個關鍵組件發表評論。
創建新StyledMapType的是非常簡單的,所以我會通過解釋StyledMapType的的關聯開始到的mapTypeId:
map.mapTypes.set('hide_street_names', hideLabels);
本質上講,這意味着你可以參考你的hideLabels
styledmap用的mapTypeId,在這種情況下是hide_street_names
- 就像你會與google.maps.MapTypeId.ROADMAP
或google.maps.MapTypeId.TERRAIN
等
然後只需輕鬆切換的mapTypeId上的點擊動作(或無論你目前控制的話),通過設置地圖的mapTypeId觸發你的風格:
map.setMapTypeId('hide_street_names');
你會注意到,我恢復到默認視圖通過更改的mapTypeId回到路線圖 - map.setMapTypeId(google.maps.MapTypeId.ROADMAP);