2015-08-11 4 views
-1

Я пытаюсь отключить масштабирование после вызова fitbounds (что определяет правильный уровень масштабирования). Я попытался установить минимальные и максимальные значения масштабирования, но это не сработает. Вот мой код:javascript google maps api - отключить масштабирование

var bounds = new google.maps.LatLngBounds(
     //south, west 
     new google.maps.LatLng(minLat, minLon), 
     //north, east 
     new google.maps.LatLng(maxLat, maxLon) 
); 
map.fitBounds(bounds); 
currentZoom = map.getZoom(); 
map.setOptions({maxZoom: currentZoom, minZoom: currentZoom}); 

Просто, чтобы понять, что я хочу, чтобы отключить это мышь трансфокации.

Спасибо

ответ

2

map.fitBounds является асинхронным, необходимо добавить прослушиватель событий для zoom_changed события.

google.maps.event.addListenerOnce(map, 'zoom_changed', function() { 
    currentZoom = map.getZoom(); 
    map.setOptions({ 
     maxZoom: currentZoom, 
     minZoom: currentZoom 
    }); 
}); 

proof of concept fiddle

фрагмент кода:

var geocoder; 
 
var map; 
 
// Newark, NJ, USA (40.735657, -74.1723667) 
 
// Baltimore, MD, USA (39.2903848, -76.6121893) 
 
var maxLat = 40.735657; 
 
var maxLon = -74.1723667; 
 
var minLat = 39.2903848; 
 
var minLon = -76.6121893; 
 

 
function initialize() { 
 
    var map = new google.maps.Map(
 
    document.getElementById("map_canvas"), { 
 
     center: new google.maps.LatLng(37.4419, -122.1419), 
 
     zoom: 13, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }); 
 
    var bounds = new google.maps.LatLngBounds(
 
    //south, west 
 
    new google.maps.LatLng(minLat, minLon), 
 
    //north, east 
 
    new google.maps.LatLng(maxLat, maxLon)); 
 
    map.fitBounds(bounds); 
 
    google.maps.event.addListenerOnce(map, 'zoom_changed', function() { 
 
    currentZoom = map.getZoom(); 
 
    map.setOptions({ 
 
     maxZoom: currentZoom, 
 
     minZoom: currentZoom 
 
    }); 
 
    }); 
 
} 
 
google.maps.event.addDomListener(window, "load", initialize);
html, 
 
body, 
 
#map_canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map_canvas" style="border: 2px solid #3872ac;"></div>

+0

Спасибо, что это работает как шарм с исправлением –

1

Просто проверьте documentation.

Отключить колесо прокрутки, кнопка, и дважды щелкните зуммирования:

map.setOptions({zoomControl: false, scrollwheel: false, disableDoubleClickZoom: true}); 
+0

это не сработало. Scrollwheel уже не было на карте. Я хочу отключить масштабирование мыши –

+0

Проверьте наличие ошибок в консоли браузера. Вышеуказанное должно отключать все типы масштабирования с помощью мыши. 'ZoomControl: false' должен отключить кнопки +/- в пользовательском интерфейсе. –

+0

Это не то, что я искал геокодезип, дал правильный ответ. Благодарю вас за помощь. –

Смежные вопросы