2011-10-10 58 views
4

我正在嘗試使用Google Maps API V3製作不水平覆蓋的地圖。因此,不是一次又一次地重複地圖,我只想顯示一次。我通過提供自定義的getTileUrl函數爲google.maps.ImageMapType防止在GMap v3中覆蓋層的水平世界環繞

但是當我添加疊加層(如標記或多邊形)時,仍然會水平重複。我怎樣才能阻止疊加層被水平重複?

編輯這裏有一個形象展示的問題: World-wrapping overlays

我在想以某種方式修改google.maps.Projection.fromLatLngToPoint()方法,但由於某種原因似乎並不可用大多數時候。

回答

2

現在我已經想出了一個辦法。該解決方案沒有用改進的投影說謊,而是受到this question about limiting panning in Google Maps的啓發。

這不是真的乾淨,因爲我想,但它的工作原理:

  1. 而是開始了(顯示全圖作爲一個地圖瓦片),縮放等級爲0的,在較高的開始了縮放級別。就我而言,我開始了在3級這樣的「虛」整個世界都在變大,移動的重複覆蓋距離較遠: great distance between repeating overlays

  2. 限制縮放級別,所以連自己的最低縮放級別,該視口不包含兩個重複覆蓋。這通過將地圖上的minZoom選項設置爲所需級別來完成。 viewport does not contain two repeating overlays

  3. 限制平移/拖動地圖,所以你不能移出所需的區域。見my answer on the limit panning question

這樣,重複覆蓋仍然存在,但你永遠都可以看到它們,因爲你不能達到他們

+0

需要相同的任務:極限映射表只顯示一個實例。刪除地圖的複製。有一些問題: 1.我們真的需要3.選項,如果我們有最小變焦?限制哪些界限只顯示整個世界但不再重複? 2.如何選擇最小縮放比例的地圖?對於我的網站,我需要地圖佔用其他控件空間中的所有剩餘空間。所以最小變焦將根據顯示器屏幕分辨率而變化。或者至少在畫布大小上。 –

+0

1.如果您不限制平移,則仍然可以平移,直到達到重複標記。雖然大多數人不會在虛無中氾濫,但通常情況下這不會成爲問題。但我仍然想阻止它發生。我剛剛嘗試過我所擁有的最大屏幕,並認爲這已經足夠好了。最後,我想我用minzoom 5. – HenningJ

+0

1.對我來說,這似乎是一個正常的情況。因爲用戶可以將中心設置爲180度。並且會在左邊看到北美和澳大利亞。在你的情況下,當你限制這是不可能的?或者你用什麼限制(哪些邊界)? 2.但在這種情況下,法律決議將少於全圖。用戶將無法看到完整的地圖。 –