如何阻止谷歌地图api v3在北极或南极下的灰色地带平移?

时间:2014-05-10 12:04:06

标签: javascript google-maps google-maps-api-3

使用谷歌地图v3 javascript API我找不到阻止地图在北极或南极下平移的方法。 作为此页面上的嵌入式地图示例: https://developers.google.com/maps/documentation/embed/guide 具有相同的行为,使用世界视图缩小并向北平移将视图置于完整的灰色区域。

如何在官方网站http://maps.google.it上完成预防?

2 个答案:

答案 0 :(得分:15)

更新 - 以下答案不再适用,我想这是因为谷歌地图API已升级。我将代码保留在此处以供参考。

感谢geocodezip的评论,我修改了Mike Williams'解决我的问题。

以下是fiddle example

相关代码部分:

google.maps.event.addListener(map, 'center_changed', function() {
    checkBounds(map);
});
// If the map position is out of range, move it back
function checkBounds(map) {

var latNorth = map.getBounds().getNorthEast().lat();
var latSouth = map.getBounds().getSouthWest().lat();
var newLat;

if(latNorth<85 && latSouth>-85)     /* in both side -> it's ok */
    return;
else {
    if(latNorth>85 && latSouth<-85)   /* out both side -> it's ok */
        return;
    else {
        if(latNorth>85)   
            newLat =  map.getCenter().lat() - (latNorth-85);   /* too north, centering */
        if(latSouth<-85) 
            newLat =  map.getCenter().lat() - (latSouth+85);   /* too south, centering */
    }   
}
if(newLat) {
    var newCenter= new google.maps.LatLng( newLat ,map.getCenter().lng() );
    map.setCenter(newCenter);
    }   
}

答案 1 :(得分:0)

使用“限制”属性为我工作:

new google.maps.Map(document.getElementById('#mapCanvas'), {
  zoom: 2,
  center: {lat: 0, lng: 0},
  tilt: 0,
  restriction: {
    latLngBounds: {north: 85, south: -85, west: -180, east: 180},
    strictBounds: true
  },
});