使用Google Maps API v3裁剪地图的一部分

时间:2013-06-02 18:19:34

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

如何为Google Maps小部件设置界限?例如,我只需要[SW corner:40.5,-25.5] - [NE corner 79.5,178.5]矩形。现在我正在使用另一个问题的代码:

var strictBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(40.5, -25.5), 
    new google.maps.LatLng(79.5, 178.5)
);

// Listen for the dragend event
google.maps.event.addListener(map, 'dragend', function() {
    if (strictBounds.contains(map.getCenter())) return;

    // We're out of bounds - Move the map back within the bounds

    var c = map.getCenter(),
        x = c.lng(),
        y = c.lat(),
        maxX = strictBounds.getNorthEast().lng(),
        maxY = strictBounds.getNorthEast().lat(),
        minX = strictBounds.getSouthWest().lng(),
        minY = strictBounds.getSouthWest().lat();

        if (x < minX) x = minX;
        if (x > maxX) x = maxX;
        if (y < minY) y = minY;
        if (y > maxY) y = maxY;

        map.setCenter(new google.maps.LatLng(y, x));
  });

但它没有产生必要的效果 - 无论如何,这段代码允许缩放地图,用户可以看到跨越严格边界的碎片。

所以,我想知道,API v3中是否有任何方法可以从完整的世界地图中裁剪出部分内容?

2 个答案:

答案 0 :(得分:1)

我认为在您的情况下,您可以通过设置相应的minZoom属性来另外禁止用户缩小界限

您可以在初始化地图时执行此操作,或者在初始化地图之后执行此操作:

 map.setOptions({minZoom:5});

答案 1 :(得分:1)

最后,我决定以geocodezip建议来解决这个问题。 有关详细信息,请参阅源代码 this page