Я провел несколько часов, пытаясь изменить уровень масштабирования карты google, используя функцию javascript onClick. Я думаю, что моя карта var находится внутри функции инициализации карты, поэтому она не работает, но я не уверен. Спасибо за вашу драгоценную помощь.Адресация карты google для изменения setZoom, нажав на внешнюю ссылку
Здесь мы идем:
1) Моя функция инициализации (с Galeries соответствующих данных, полученных для маркеров)
function initialize() {
var styles = [
{
stylers: [
{ hue: "#486FD5" },
{ saturation: 10 },
{ lightness: 20 },
{ gamma: 1.1 }
]
},{
featureType: "road",
elementType: "geometry",
stylers: [
{ lightness: 40 },
{ visibility: "simplified" }
]
},{
featureType: "road",
elementType: "labels",
stylers: [
{ visibility: "off" }
]
}
];
var mapOptions = {
zoom: 6,
center: new google.maps.LatLng(46.8,1.7),
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: false,
scrollwheel: false,
styles: styles
}
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
setMarkers(map, galeries);
}
function setMarkers(map, locations) {
var image = '/wordpress/wp-content/uploads/logo-25.png';
for (var i = 0; i < locations.length; i++) {
var galeries = locations[i];
var myLatLng = new google.maps.LatLng(galeries[1], galeries[2]);
var infoWindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
icon: image
});
(function(i) {
google.maps.event.addListener(marker, "click", function() {
var galeries = locations[i];
infoWindow.close();
infoWindow.setContent(
"<div id='boxcontent'><a href='"+galeries[3]+"'><strong style='color:black'>"+ galeries[0] +"</strong></a><br />"+ galeries[4] +"</div>"
);
infoWindow.open(map, this);
});
})(i);
}
}
google.maps.event.addDomListener(window, 'load', initialize);
2) Моя функция вызывается с OnClick (все комментарии, соответствующие решения KO):
function zoom() {
//map_canvas.setCenter(marker.getPosition());
//map.setZoom(map.getZoom() + 1);
//map.setZoom('3');
//$('#map_canvas').gmap({'zoom':2});
//$('#map_canvas').setZoom(3);
//google.maps.map.setZoom(2);
//var carte = google.maps.Map(document.getElementById('map-canvas'));
//carte.setZoom(2);
//this.map.setZoom(2);
}
3) Результат: ничего не происходит, и на консоли я получаю:
Uncaught TypeError: Cannot read property 'setZoom' of undefined
Это на самом деле довольно просто: ваша карта является локальной переменной. Определите его вне функции инициализации как глобальной переменной, и она будет работать. Или передайте его как переменную для вашей функции масштабирования, как вы делали с функцией setMarkers. – Carsten
Спасибо Карстен за вашу помощь. Это было очевидно; он работает отлично. Хороший день – guillaume