简体   繁体   English

限制Google Maps上的滚轮缩放级别

[英]Limit scroll wheel zoom level on Google Maps

I have the following code that should limit the zooming within my map. 我有以下代码应限制地图中的缩放。 The Zoom is limited when I manually click the zoom in and zoom out buttons (plus and minus) of the map controls. 当我手动单击地图控件的放大和缩小按钮(加号和减号)时,缩放受到限制。 This is somehow not happening when I'm using a scroll-wheel to zoom. 当我使用滚轮进行缩放时,这不会以某种方式发生。 How can I limit the zoom level that my scroll-wheel is applying? 如何限制滚轮应用的缩放级别? I don't want to deactivate the zoom via scroll-wheel. 我不想通过滚轮禁用缩放。

function initMap() {
    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 12,
        center: {lat: 52.520008, lng: 13.404954},
    });

    var old_zoom_level = 12;
    map.data.loadGeoJson('data/1000_berlin_buildings.json');
    //map.data.loadGeoJson('google.json');

    map.data.setStyle(styleFeature);
    map.data.addListener('mouseover', mouseInToRegion);
    map.data.addListener('mouseout', mouseOutOfRegion);

    map.addListener('bounds_changed', function(){
        //console.log("bounds changed");
    });

    google.maps.event.addListener(map, 'zoom_changed', function () {
        // if (map.getZoom() < 9) map.setZoom(9);
        var new_zoom_level = map.getZoom();
        console.log("zoom Changed from "+ old_zoom_level +" to "+new_zoom_level);

        if (new_zoom_level < __min_zoom_level) {
            new_zoom_level = __min_zoom_level;
            map.setZoom(__min_zoom_level);
        }
        if (new_zoom_level > __max_zoom_level) {
            new_zoom_level = __max_zoom_level;
            map.setZoom(__max_zoom_level);
        }
        old_zoom_level = new_zoom_level;
    });

}

You can do that in a much easier way, by using the map minZoom and maxZoom properties. 通过使用地图的minZoommaxZoom属性,您可以以更简单的方式进行操作。

var map = new google.maps.Map(document.getElementById('map-canvas'), {
    zoom: 12,
    center: {lat: 52.520008, lng: 13.404954},
    minZoom: 10,
    maxZoom: 14
});

If you need these values to change at any point, simply use the map setOptions() method: 如果您需要随时更改这些值,只需使用map setOptions()方法:

map.setOptions({
  minZoom: 8,
  maxZoom: 15
});

Working snippet: 工作片段:

 var map; function initialize() { var map = new google.maps.Map(document.getElementById('map-canvas'), { zoom: 12, center: { lat: 52.520008, lng: 13.404954 }, minZoom: 10, maxZoom: 14, }); google.maps.event.addDomListener(document.getElementById('btn'), 'click', function() { map.setOptions({ minZoom: 5, maxZoom: 15 }); }) } initialize(); 
 #map-canvas { height: 150px; } #btn { margin-top: 10px; line-height: 30px; background: yellow; cursor: pointer; } 
 <div id="map-canvas"></div> <button id="btn">Change limits to min: 5 and max: 15</button> <script src="https://maps.googleapis.com/maps/api/js"></script> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM