Google maps api 3 防止gmapv3中的世界包装

Google maps api 3 防止gmapv3中的世界包装,google-maps-api-3,Google Maps Api 3,我目前正在从v2迁移到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 >= tileBou

我目前正在从v2迁移到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;};
var proj=新的gmercatorproject(30);
proj.tileCheckRange=函数(a,b,c){
var tileBounds=数学功率(2,b);
如果(a.y=tileBounds){返回false;}
如果(a.x=tileBounds){返回false;}
返回true;
};
proj.getWrapWidth=函数(缩放){
返回99999999999;
};
G_NORMAL_MAP.getProjection=function(){return proj;};
但我还没有找到v3的解决方案


编辑以澄清一点:我不是在寻找一种防止平移(侧向导航)的方法,而是一种防止地图自身重复的方法,特别是在低缩放级别下查看以下两个答案。这里概述的技术应该让您(取决于您的用例)在大部分方面或者可能在所有方面达到目的


这些答案并没有说明如何限制包装,但它们确实说明了如何限制平移。如果您可以采取其他措施来限制初始视口中的内容(例如,如果您可以控制大小并适当限制缩放级别和初始坐标),则限制平移可以使您达到目的。

通过这种方式可以很容易地防止世界环绕(改编自Trott链接的答案)


限制
映射选项
属性在这里有帮助

new google.maps.Map(
集装箱,
{
限制:
{
南边界:{北:85,南:85,西:179.5,东:179.5},
严格限制:正确
}
});
这还将处理通常显示在北/东边界之外的“填充”,并使地图在地图平铺结束的位置“结束”


你可以稍微修改一下数字来说明更多(或更准确)的区域,但我认为对于大多数情况来说这应该足够了。

这只会防止平移,而不是包装。这就是为什么我写了“取决于你的用例”和“大部分情况”。如果您可以采取其他措施来限制初始视口中的内容,比如说,如果您可以控制大小,并且可以适当地限制缩放级别和初始坐标,那么限制(而不是阻止)平移可以实现这一点。
// 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);
  });