Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript google map api如何通过单击几个标记之一来放大和缩小_Javascript_Google Maps_Google Maps Api 3_Google Maps Markers - Fatal编程技术网

Javascript google map api如何通过单击几个标记之一来放大和缩小

Javascript google map api如何通过单击几个标记之一来放大和缩小,javascript,google-maps,google-maps-api-3,google-maps-markers,Javascript,Google Maps,Google Maps Api 3,Google Maps Markers,在地图上我有各种各样的标记。单击标记后,用户会放大并居中显示标记的详细信息,mapTypeId也会随着地形和卫星的变化而变化 我希望用户能够再次单击标记以缩小、居中地图并将mapTypeId更改回terrain 地图初始化如下所示: var map = new google.maps.Map(document.getElementById('map-canvas'), { scrollwheel: false, navigationControl: false, mapT

在地图上我有各种各样的标记。单击标记后,用户会放大并居中显示标记的详细信息,mapTypeId也会随着地形和卫星的变化而变化

我希望用户能够再次单击标记以缩小、居中地图并将mapTypeId更改回terrain

地图初始化如下所示:

var map = new google.maps.Map(document.getElementById('map-canvas'), {
    scrollwheel: false,
    navigationControl: false,
    mapTypeControl: false,
    zoom: 11,
    center: new google.maps.LatLng(-37.6756817,145.6690691),
    mapTypeId: 'terrain'
});
var mapzoom = map.getZoom(); 
var markerListener = google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
        map.panTo(this.getPosition());
        map.setZoom(16);
        map.setMapTypeId('satellite'); 
    }
})(marker, i));
我们设置了一系列这样的城镇:

var locations = [
    // Healesville
    ['Town: <a href="#">Healesville</a>', -37.6534206,145.5117927, 'uploaded-images/marker-red-32h.png',0],
    // Warburton
    ['Town: <a href="#">Warburton</a>', -37.7514003,145.6919378, 'uploaded-images/marker-red-32h.png',1],
    [...],
    [...],
    [...]
];
我开始了第二部分的缩小:

google.maps.event.addListener(map, 'zoom_changed', function() {
    var zoomLevel = map.getZoom();
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
        if(zoomLevel > 11) {
            return function() {
                var center = new google.maps.LatLng(-37.6756817,145.6690691);
                map.setCenter(center);
                map.setZoom(11);
                map.setMapTypeId('terrain');
            }
        } else {
            return function() {
                map.panTo(this.getPosition());
                map.setZoom(16);
                map.setMapTypeId('satellite');
            }
        }
    })(marker, i));
}

不幸的是,缩小脚本只对标记数组中的最后一个标记起作用。需要了解如何缩小到地图上每个标记的原始设置。

在缩放处理代码中,您只有对最后一个标记的引用(它在循环的最后一次被设置为最后一个值)。只需将代码添加到marker click函数中就更简单了。我想你想要的是:

var markerListener = google.maps.event.addListener(marker, 'click', (function(marker, i) {
  return function() {
    zoomLevel = map.getZoom();
    if (zoomLevel <= 11) {
      map.panTo(this.getPosition());
      map.setZoom(16);
      map.setMapTypeId('satellite');
    } else {
      var center = new google.maps.LatLng(-37.6756817, 145.6690691);
      map.setCenter(center);
      map.setZoom(11);
      map.setMapTypeId('terrain');      
    }
  }})(marker, i));
}


如何在地图上加载标记?地图缩放中出现语法错误(“更改的侦听器(缺少结尾”))”。胜利。非常感谢。