0

Я создал кнопку внутри моего информационного окна, которое нужно скопировать на маркер, а затем увеличить, но я не могу заставить ее работать. Ниже моя функция масштабированияФункция масштабирования Google maps

function Zoom(){ 
google.maps.event.addListener(marker, 'click', function() { 
    map.panTo(marker.position); 
    map.setZoom(18); 
}); 

и это функция, которая создает маркер и заполняет информационное окно с ниже HTML.

function createMarker(latlng, name, woonplaats, prijs, perceelop, woonop, address) { 
    var html ="<a href="+address+">"+"<b>"+name+"</b></a> <br/>" 
      + woonplaats +"</br>" + woonop + "/ " + perceelop + "</br>" + "€ " + prijs + 
      "</br><input id='zoombutton' type='button' onclick='Zoom()' value='Zoom in' />" 
    var marker = new google.maps.Marker({ 
    map: map, 
    position: latlng 
    }); 
    google.maps.event.addListener(marker, 'click', function() { 
    infoWindow.setContent(html); 
    infoWindow.open(map, marker); 
    }); 
    markers.push(marker); 
} 

Если удалить функцию PANTO это делает Увеличение, но это не панорамирование к маркеру, так что масштабирование в совершенно другом месте. Я также попытался сделать кнопку невидимой, если уровень масштабирования равен 18 или выше, но без результата.

Любая помощь будет высоко оценена!

+0

Просьба [Minimal, Complete, испытана и читаемый примера] (http://stackoverflow.com/help/mcve), который демонстрирует эту проблему. – geocodezip

ответ

1

marker.position - недокументированный параметр (если он существует). Используйте marker.getPosition(), чтобы получить позицию маркера.

function Zoom(){ 
    google.maps.event.addListener(marker, 'click', function() { 
    map.panTo(marker.getPosition()); 
    map.setZoom(18); 
    }); 
// ?? 
} 

Я получаю яваскрипт ошибки с кодом, хотя: Uncaught ReferenceError: marker is not defined

  • не знает, почему вы добавляете щелчок слушатель в кнопке OnClick функции
  • вам нужно будет держать ссылки все ваши маркеры (предполагая, что есть больше чем один)
// in the global scope: 
var markers = []; 

function Zoom(markerNum) { 
    // markerNum is the index of this marker in the markers array 
    map.panTo(markers[markerNum].getPosition()); 
    map.setZoom(18); 
} 

working fiddle

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

var map; 
 
var markers = []; 
 
var infoWindow = new google.maps.InfoWindow(); 
 

 
function initialize() { 
 
    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 
 
    }); 
 
    createMarker(map.getCenter(), "Palo Alto"); 
 
    createMarker({ 
 
    lat: 37.42410599999999, 
 
    lng: -122.1660756 
 
    }, "Stanford"); 
 
} 
 

 
function createMarker(latlng, name) { 
 
    var html = name + "</br><input id='zoombutton' type='button' onclick='Zoom(" + markers.length + ")' value='Zoom in' />" 
 
    var marker = new google.maps.Marker({ 
 
    map: map, 
 
    position: latlng 
 
    }); 
 
    google.maps.event.addListener(marker, 'click', function() { 
 
    infoWindow.setContent(html); 
 
    infoWindow.open(map, marker); 
 
    }); 
 
    markers.push(marker); 
 
} 
 

 
function Zoom(markerNum) { 
 
    map.panTo(markers[markerNum].getPosition()); 
 
    map.setZoom(18); 
 
} 
 
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"></div>