#javascript #google-maps #google-maps-api-3 #google-maps-markers
#javascript #google-карты #google-maps-api-3 #google-карты-маркеры
Вопрос:
Карты Google не поддерживают 19 или 20 масштабирование в той области, где я хочу его использовать. Я пытаюсь это сделать с помощью css. Я создаю карту, добавляя событие wheel, чтобы распознать, какой пользователь уровня масштабирования включен. Если оно равно 20, я добавляю свойство css zoom к карте. Однако на этот раз infowindow создается в неправильных позициях по моему щелчку.
map = new google.maps.Map(document.getElementById("map"), {
center: { lng: 1.393307, lat: 52.824281 },
fullscreenControl: false,
type: "HYBRID",
minZoom: 8,
maxZoom: 0,
zoom: 5,
gestureHandling: 'greedy',
mapTypeId: 'hybrid',
streetViewControl: false,
controlSize: 27,
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.HYBRID, "Map"],
},
});
Событие колеса и класс ‘ css
.zoom {
zoom: 2;
}
window.addEventListener('wheel', function (event) {
if (event.deltaY < 0) {
if (map.getZoom() == 20) {
$('#map > div').eq(0).addClass("zoom");
}
}
else if (event.deltaY > 0) {
if (map.getZoom() <= 20) {
$('#map > div').eq(0).removeClass("zoom");
}
}
});
Событие щелчка на Картах Google
google.maps.event.addListener(map, "click", (function (mapsMouseEvent) {
var position = mapsMouseEvent.latLng;
infowindow.setPosition(position);
infowindow.setContent("test");
infowindow.open(map);
}));
Jsfiddle live test здесь; https://jsfiddle.net/mylayf/ubeaL9s2/13
Комментарии:
1. Пожалуйста, ответьте здесь..
2. @geocodezip Не могли бы вы взглянуть сюда, пожалуйста?
Ответ №1:
Делая это:
.zoom {
zoom: 2;
}
Вы меняете размер контейнера. Но увеличение карты выполняется путем загрузки данных нового слоя. При умножении размера контейнера изображения будут больше (вместе с кнопками и т. Д.), Но это не загружает новый слой. Таким образом, переднее окно и контейнер будут иметь сдвиг. Например, если вы используете масштабирование 2, переднее окно будет составлять 1/4 увеличенного фонового изображения, а если вы нажмете посередине, оно будет точно в правом нижнем углу фонового изображения.
Так что просто измените maxZoom: 0
на что-то вроде maxZoom: 30
. Он загрузит изображения с максимальным разрешением (равным maxZoom: 18). Если этого недостаточно для вашей, на этой карте больше нет разрешения, и вам нужно переключиться на другого поставщика карт с большим количеством слоев для масштабирования.