2012-10-23 30 views
0

標籤我使用的是風格的地圖 - 現在我想申請一個按鈕隱藏/顯示街道GoogleMapApi3 - 隱藏在飛行

等標籤......但是當我通過「地圖設置的樣式。 setOptions({styles:MyStylesArrayShowLabel});「 ,它會殺死我已經放置的所有標記....

...有沒有一種方法可以在不破壞標記的情況下即時設置樣式?

(所有標記[豁家庭標記/ infowindo]從通過SQL和PHP中的數據庫生成)

回答

1

是有,你必須利用MapTypeIds和樣式化地圖的ID相關聯。然後使用map.setMapTypeId([MapTypeId])而不是map.setOptions([options])即時更改您的地圖樣式。我建議快速閱讀Styled Maps doc以供參考。但本質上,你必須採取注意到的是三兩件事:

  1. 創建一個新的StyledMapType的對象
  2. 用的mapTypeId
  3. 的地圖類型設置爲顯示

我關聯的樣式化地圖在jsfiddle中包含了一個示例,並對您應該注意的3個關鍵組件發表評論。

創建新StyledMapType的是非常簡單的,所以我會通過解釋StyledMapType的的關聯開始到的mapTypeId:

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

本質上講,這意味着你可以參考你的hideLabels styledmap用的mapTypeId,在這種情況下是hide_street_names - 就像你會與google.maps.MapTypeId.ROADMAPgoogle.maps.MapTypeId.TERRAIN

然後只需輕鬆切換的mapTypeId上的點擊動作(或無論你目前控制的話),通過設置地圖的mapTypeId觸發你的風格:

map.setMapTypeId('hide_street_names'); 

你會注意到,我恢復到默認視圖通過更改的mapTypeId回到路線圖 - map.setMapTypeId(google.maps.MapTypeId.ROADMAP);