2011-04-12 73 views
5

我目前正在從v2遷移到v3。世界不應該縱向重複。防止GMap v3中的世界包裝

在V2,這可能與一些存檔這樣的:

var proj = new GMercatorProjection(30); 
proj.tileCheckRange = function(a,b,c) { 
    var tileBounds = Math.pow(2,b); 
    if (a.y<0 || a.y >= tileBounds) {return false;} 
    if (a.x<0 || a.x >= tileBounds) {return false;} 
    return true; 
}; 

proj.getWrapWidth = function(zoom) { 
    return 99999999999999; 
}; 

G_NORMAL_MAP.getProjection = function() {return proj;}; 

但我還沒有找到V3的解決方案。爲了澄清一點:我沒有尋找一種方法來防止平移(橫向導航),而是一種防止地圖自我重複的方式,尤其是在一些情況下,在低縮放水平

回答

2

查看How do I limit panning in Google maps API V3?的兩個答案。這裏概述的技術應該會讓你(取決於你的使用案例)大部分途徑或者可能一直存在。

這些答案不顯示如何限制環繞,但他們確實顯示如何限制平移。如果您可以採取其他措施來限制初始視口中的內容(例如,如果您可以控制尺寸,並且可以適當限制縮放級別和初始座標),那麼限制平移可以讓您到達那裏。

+0

這就是爲什麼我寫了「這取決於你的使用情況」和「最那裏的方式。」如果您可以採取其他措施來限制初始視口中的內容 - 例如,如果您可以控制尺寸,並且可以適當限制縮放級別和初始座標,那麼限制(而不是阻止)平移可以讓您到達那裏。 – Trott 2011-11-10 17:09:11

-1

世界包裝可以容易地防止這樣(改編自特洛特鏈接的答案)

// prevent wrap                                                              
    var lastValid = map.getCenter(); 
    google.maps.event.addListener(map, 'center_changed', function() { 
    if(map.getBounds().getNorthEast().lng() > map.getBounds().getSouthWest().lng()) { 
     lastValid = map.getCenter(); 
    } 
    else 
     map.panTo(lastValid); 
    }); 
+1

這隻能防止平移,而不是包裝。 – Mene 2011-11-10 15:48:45