缩放功能 Google 地图

Zoom function Google maps

我在我的信息 window 中创建了一个按钮,需要平移到标记然后放大,但我无法让它工作。下面是我的缩放功能

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

这是创建标记并用下面的 html 填充信息 window 的函数。

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 或更高但没有结果,我还尝试使按钮不可见。

非常感谢任何帮助!

marker.position 是未记录的参数(如果存在)。使用 marker.getPosition() 获取标记的位置。

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

虽然你的代码出现 javascript 错误:Uncaught ReferenceError: marker is not defined

  • 不确定为什么要在按钮 onclick 函数中向 marker 添加点击侦听器
  • 您需要保留对所有标记的引用(假设有多个标记)
// 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>