我目前正在从v2迁移到v3。世界不应该纵向重复。
在第2版中,可以使用以下内容存档:
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找到解决方案。
编辑澄清一下:我不是在寻找一种方法来防止平移(横向导航),而是一种防止地图重复自我的方法,尤其是在低缩放级别
答案 0 :(得分:2)
在How do I limit panning in Google maps API V3?查看两个答案。在那里概述的技术应该让你(取决于你的使用案例)大部分在那里或者可能在那里。
这些答案没有说明如何限制包装,但它们确实显示了如何限制平移。如果您可以采取其他措施来限制初始视口中的内容(例如,如果您可以控制大小并且可以适当地限制缩放级别和初始坐标),那么限制平移可以帮助您实现目标。
答案 1 :(得分:0)
restriction
MapOption
属性可以在此处提供帮助。
new google.maps.Map(
container,
{
restriction:
{
latLngBounds: {north: 85, south: -85, west: -179.5, east: 179.5},
strictBounds: true
}
});
这还将处理通常在北/东边界之外显示的“填充”,并使地图在地图图块的结尾处“结束”。
您可以摆弄一些数字以说明更多(或更准确)的面积,但是我认为对于大多数情况来说,这已经足够了。
答案 2 :(得分:-1)
可以通过这种方式轻松防止世界包装(改编自Trott链接的答案)
// 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);
});