#javascript #jquery #google-maps #google-maps-api-3
#javascript #jquery #google-карты #google-maps-api-3
Вопрос:
У меня есть скрипт для карт Google, который zoom
установлен на определенном расстоянии для настольных браузеров. Мне было интересно, есть ли возможность изменить масштаб при просмотре на мобильном устройстве.
Я думаю, что это можно сделать с помощью if
инструкции, но я не уверен, как бы я интегрировал это в скрипт. Я не очень хорошо разбираюсь в jquery и был бы признателен за любую помощь.
скрипт является:
<script>
window.onload = function () {
var latlng = new google.maps.LatLng(51.523612, -0.125816);
var styles = [{
"stylers": [{
"saturation": -100
}, {
"hue": "#ff0000"
}, {
"gamma": 0.92
}]
}, {
"featureType": "poi",
"stylers": [{
"visibility": "off"
}]
}, {
"elementType": "geometry.fill",
"stylers": [{
"gamma": 0.85
}]
}, {}]
var myOptions = {
zoom: 17,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true,
scrollwheel: false,
draggable: false,
styles: styles
};
map = new google.maps.Map(document.getElementById('map'), myOptions);
var marker = new google.maps.Marker({
position: latlng,
map: map,
});
marker.setMap(map);
}
</script>
Ответ №1:
Вы работаете с фиксированным центром (51.523612, -0.125816)
, иd фиксированный масштаб (17)
таким образом, ваша карта всегда будет отображаться так, как если бы вы указали ее
map.setCenter(new google.maps.LatLng(51.523612, -0.125816));
map.setZoom(17);
На моем экране (1920×1080) с открытой консолью это будет примерно означать, что границы карты определяются
SW:(51.522, -0.136)
NE:(51.526, -0.12)
Таким образом, я могу получить тот же видовой экран, если вместо настройки центра и масштабирования я укажу, чтобы моя карта соответствовала этим границам.
map.fitBounds(new google.maps.LatLngBounds(new google.maps.LatLng(51.522, -0.136), new google.maps.LatLng(51.526, -0.12)))
И это автоматически вычислит, какой масштаб следует применить, учитывая размер вашего экрана. Конечно, масштаб изменяется дискретными шагами, поэтому результат может быть не совсем таким, какой вам нужно показать.
В вашем случае это означает объявить вашу карту как
var myOptions = {
bounds: new google.maps.LatLngBounds(new google.maps.LatLng(51.522, -0.136), new google.maps.LatLng(51.526, -0.12)),
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true,
scrollwheel: false,
draggable: false,
styles: styles
};
map = new google.maps.Map(document.getElementById('map'), myOptions);
Комментарии:
1. итак, я удаляю установленные значения, а затем заменяю
map = new google.maps.Map(document.getElementById('map'), myOptions);
вашим предложением?2. Вы можете добавить мою строку после объявления вашей карты или опустить центр и масштабирование и вместо этого указать параметр границ в объявлении. Позвольте мне отредактировать мой ответ.