1

通常、マップを垂直方向にスクロール/ズームアウトすることができます。灰色の背景があります。私はそれを「無効化/ブロック」しました。

Googleマップのコントロールを使用すると、これはうまく機能します。しかし、マウス ホイールでズームするとバグが発生し、マップをズームアウトできるため、灰色の領域が表示されます。

これが実際の例です:

マウスホイールのズームを無効にせずにどうすれば修正できますか?

画像: 灰色の領域が表示され、ズームアウト

THEME.gmap.position = function () {
var allowedBounds;
var lastCenter;
var lastZoom;
var initCenter;
var initZoom;

function checkBounds() {
    if (THEME.base.isUndefined(allowedBounds)) {
        return false;
    }
    if (allowedBounds.getNorthEast().lat() > THEME.gmap.google_map.getBounds().getNorthEast().lat()) {
        if (allowedBounds.getSouthWest().lat() < THEME.gmap.google_map.getBounds().getSouthWest().lat()) {
            lastCenter = THEME.gmap.google_map.getCenter();
            lastZoom = THEME.gmap.google_map.getZoom();
            return true;
        }
    }
    THEME.gmap.google_map.panTo(lastCenter);
    THEME.gmap.google_map.setZoom(lastZoom);
    return false;
}

return {
    createLatLng:function (lat, lng) {
        return new google.maps.LatLng(lat, lng);
    },
    centerMap:function (latLng) {
        THEME.gmap.google_map.setCenter(latLng);
    },
    setLimit:function () {
        allowedBounds = new google.maps.LatLngBounds(
            this.createLatLng(-85.0511, -122.591),
            this.createLatLng(85.0511, -122.333)
        );
        initCenter, lastCenter = THEME.gmap.google_map.getCenter();
        initZoom, lastZoom = THEME.gmap.google_map.getZoom();
        google.maps.event.addListener(THEME.gmap.google_map, 'bounds_changed', function () {
            checkBounds();
        });
        google.maps.event.addListener(THEME.gmap.google_map, 'center_changed', function () {
            checkBounds();
        });
    }
};
}();
4

1 に答える 1

1

これは 2 つの競合するイベントによって強制されていると思います。通常、両方のイベントが毎回発生します。イベントは冗長であるためcenter_changed(中心が変わると境界も変更されます)、center_changed-listener を削除できます(私にとってはこれで問題も解決します)

于 2013-02-19T11:56:28.047 に答える