2013-07-12 77 views
1

我正在使用谷歌地圖v3 javascript api,並且我嘗試根據指南在google.develper處創建自定義地圖類型。與多個圖層的自定義maptype

不過,我發現,地圖類型只提供一個層,而我的自定義地圖類型應該提供兩層就像它包含兩層google.maps.MapTypeId.HYBRID - 的SATELLITEPlacenames

所以我想知道這是否可能?

BWT,我問關於maptype和圖層here的問題。

看來,地圖類型是由層組成的,這是真的嗎?


事實上,我的第一個問題是通過Michael Geary解決的。

但是,我現在遇到新問題,因爲它仍然與自定義maptype有關,所以我更新這篇文章而不是創建一個新問題。

Q2:

怎麼樣,如果我有一個以上的層MapTypeControl中?

正如您所看到的,google.maps.mapTypeId.HYBRID有兩層 - 衛星和標籤。

所以在地圖類型的控制,你會發現這一點:

enter image description here

注意Labels複選框。

現在我對我的自定義maptypes - baselabels有兩層,如何使labels圖層可以切換?

回答

1

自定義地圖類型爲每個圖塊定義一個DOM元素as described here。 DOM元素不僅限於單個圖像。你可以有一個<div>與任何數量的圖像和嵌套在其中的其他元素。

混合地圖類型是用這種方法實現的。這裏是Chrome DOM督察顯示在混合衛星視圖中的單個地圖瓦片截圖:

Hybrid map tile DOM elements

正如你所看到的,<div>有兩個孩子<img>。第一個來自khms0.googleapis.com,是基本的衛星磁貼圖像。第二個來自mts0.googleapis.com,是帶有透明背景的標籤和邊框疊加圖塊。就地圖API而言,這僅僅是一種地圖類型:API只知道容器<div>,而不是其中的圖像。

base map exampleBase Map Types文檔部分舉例說明了使用<div>元素作爲地圖圖塊。您可以將其作爲起點,並在<div>內添加您的<img>瓷磚。

+0

太棒了!我從來沒有找到這個。這意味着我可以重寫'google.maps.MapType'而不是'google.maps.ImageMapType',然後手動創建tile(dom元素)?順便說一句,這些層怎麼樣? – hguser

+0

沒錯,您可以使用基本的MapType。 'ImageMapType'僅適用於每個圖塊都有單個圖像的簡單情況。我認爲您在其他問題中詢問的「圖層」是[Overlay Map Types](https://developers.google.com/maps/documentation/javascript/maptypes?hl=en-us#OverlayMapTypes)。這是一個透明圖層MapType,您希望將其應用於基本MapType。它是一個單獨的MapType,因此可以應用於不同類型的基礎地圖。這與具有混合地圖等內部圖層的單一地圖類型不同。 –

+0

雖然我說「圖層」,但我不是指「覆蓋圖類型」,而是指圖層(https://developers.google.com/maps/documentation/javascript/layers?hl=zh-CN)。由於看起來這些圖層都是由圖塊組成的,那麼圖層和疊加圖層類型之間有什麼區別? – hguser