2012-05-17 93 views
2

我正在使用瓷磚覆蓋(可視)來顯示空間,建築物名稱,輔助功能和停車空間以及KML多邊形的渲染(功能)以允許用戶點擊各種建築物或興趣點來提供更多信息。我目前的問題在於組織這些不同的元素。如何在Google Maps中更改KML和圖塊疊加層的分層?

目前,KML多邊形出現在所有瓦片疊加層之上,包括建築物名稱和停車位,我寧願將它們放在KML多邊形的頂部,否則它們會被多邊形遮蔽。總之,這裏是當前分層:

  • KML多邊形
  • 建築物名稱(透明)
  • 無障礙(透明)
  • 停車(透明)
  • 空間繪製(不透明)
  • 谷歌地圖

理想情況下,我寧願讓KML多邊形出現在這些瓦片疊加層中,即正好在空間渲染之上。因此,我希望得到這個分層:

  • 建築物名稱(透明)
  • 無障礙(透明)
  • 停車(透明)
  • KML多邊形
  • 空間繪製(不透明)
  • Go ogle地圖

是否有無論如何重新排列KML瓦片覆蓋圖層來實現這一目標?

圖塊疊加:

map.overlayMapTypes.insertAt(0, renderMapType); 
map.overlayMapTypes.insertAt(1, parkingMapType); 
map.overlayMapTypes.insertAt(2, accessMapType); 
map.overlayMapTypes.insertAt(3, nameMapType); 

編輯:

請允許我解釋清楚的地圖多一點。

當Google地圖位於「地圖」中時,會顯示渲染圖,並且大多數KML多邊形都是不可見的,渲染器上沒有顯示的那些仍然可見,以便用戶仍然知道它們的存在。當Google地圖處於「衛星」狀態時,不會顯示渲染,並且所有KML多邊形都可見並覆蓋衛星圖像上各自的元素,使用戶更容易看到。

在任何一種情況下,都可以使用可訪問性,停放和名稱疊加層,並且由於總是至少有一些KML多邊形必須可見,所以我採取了尋找重新排序圖層的方法。

+0

既然您使用KML來處理鼠標點擊,這是不是會導致很多點擊丟失?建築物名稱,輔助功能和停車層是否處理鼠標點擊? –

+0

@SeanMickey KML元素允許用戶點擊地圖上的建築物或興趣點,並提供有關該對象的更多信息。據我所知,其他三個層次不是因爲它們是向地圖添加視覺信息的簡單瓦片覆蓋。 –

回答

1

要實際更改圖層排序,您需要使用自定義圖塊疊加並將其放置在適當的窗格中。這是我創作的免費使用的實現。現在創建的大部分功能都存在於地圖API中。

http://search.missouristate.edu/map/mobile/examples/tileoverlay.htm

你可能需要調整其窗格覆蓋被繪製。以下是適用的源代碼行:

this.getPanes().mapPane.appendChild(this.settings.div_); 
+0

因此,簡而言之,我只需將我希望在KML多邊形上顯示的三個疊加層重新分配到比多邊形高的窗格,對不對? –

+0

這是一般的想法。但是,您需要的窗格數量有限,我必須試着確定哪一個包含KML圖層vs平鋪圖層。如果它們都使用同一個窗格,則可以簡單地調整疊加div上的z-index:'div_'。 –

+0

(https://developers.google.com/maps/documentation/javascript/reference#MapPanes) 從我在這裏閱讀的內容可以看出,「overlayLayer」(第1部分)包含所有元素,因此z我的指數是適用的。此外,由於上面的所有窗格似乎都是用於標記和信息窗口的,在這種情況下兩者都被禁用,這也可能是可行的。 無論哪種情況,我都有一個我可以追求的方向。非常感謝你的洞察力。 –

1

您不能輕易更改圖層排序,但是您可以在KML中使用透明多邊形來獲得相同的效果。

+0

謝謝你的回答,但是,地圖的排列方式使得KML不可能永遠不可見。我在問題中添加了更多信息,爲什麼確切地說,我很抱歉沒有從一開始就包含它。 –

相關問題