Google maps api 3 Google Maps API v3在特定缩放级别下打开标记

Google maps api 3 Google Maps API v3在特定缩放级别下打开标记,google-maps-api-3,zooming,low-level,markers,Google Maps Api 3,Zooming,Low Level,Markers,我是超级绿色,需要一些项目的帮助。凭借我对html和javascript的有限知识,我能够制作一个包含多个位置的谷歌地图。这是我的代码(如果代码不好,请原谅,但它起作用了): 谷歌地图多个标记 html{高度:100%} 正文{高度:100%;边距:0px;填充:0px} #地图{高度:100%} 变量位置=[ [47.003088, -96.929448], [46.817268, -96.810024], [46.842064, -96.796163], [46.644816, -96.4

我是超级绿色,需要一些项目的帮助。凭借我对html和javascript的有限知识,我能够制作一个包含多个位置的谷歌地图。这是我的代码(如果代码不好,请原谅,但它起作用了):


谷歌地图多个标记
html{高度:100%}
正文{高度:100%;边距:0px;填充:0px}
#地图{高度:100%}
变量位置=[
[47.003088, -96.929448],
[46.817268, -96.810024],
[46.842064, -96.796163],
[46.644816, -96.408616],
[46.860142, -96.751281],
[46.789894, -96.807715],
[46.844050, -96.856140],
[46.921464, -96.780208],
[46.585881, -96.843754],
[46.860947, -96.913269],
[46.844127, -96.813441],
[46.852872, -96.891369],
[46.828628, -96.775868]
];
var map=new google.maps.map(document.getElementById('map'){
缩放:8,
中心:新google.maps.LatLng(46.827,-96.846),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var标记,i;
对于(i=0;i

我真正想做的是让标记只在更近的缩放级别上出现。放大到很远的地方时,我不需要它们。如果它们在我接近的时候出现,那就太完美了。

我想你必须像这样绑定zoom_changed事件

google.maps.event.addListener(map, 'zoom_changed', function() {
   var zoom = map.getZoom();
    if( zoom > minValue && zoom < maxValue) {
         //show markers if not already there
    }
    else {
        //remove markers if already there
    }
});
google.maps.event.addListener(映射'zoom_changed',函数(){
var zoom=map.getZoom();
如果(缩放>最小值&&zoom<最大值){
//如果尚未显示标记,则显示标记
}
否则{
//删除标记(如果已经存在)
}
});
编辑

var locations = [
    [47.003088, -96.929448],
    [46.817268, -96.810024],
    [46.842064, -96.796163],
    [46.644816, -96.408616],
    [46.860142, -96.751281],
    [46.789894, -96.807715],
    [46.844050, -96.856140],
    [46.921464, -96.780208],
    [46.585881, -96.843754],
    [46.860947, -96.913269],
    [46.844127, -96.813441],
    [46.852872, -96.891369],
    [46.828628, -96.775868]
];

var map = new google.maps.Map(document.getElementById('map'), {
  zoom: 8,
  center: new google.maps.LatLng(46.827, -96.846),
  mapTypeId: google.maps.MapTypeId.ROADMAP
});


var markers = [];

for (var i = 0; i < locations.length; i++) {  
  var marker = new google.maps.Marker({
                position: new google.maps.LatLng(locations[i][0], locations[i][1]),
                map: map
                });
  markers.push(marker);
 }

 var minValue = , maxValue = ;

 google.maps.event.addListener(map, 'zoom_changed', function() {
   var zoom = map.getZoom();
    if( zoom > minValue && zoom < maxValue) {
       for (var i = 0; i < locations.length; i++) {    
         markers[i].setMap(map);
       }
    }
    else {
       for (var i = 0; i < locations.length; i++) {    
         markers[i].setMap(null);
       }
    }
});
var位置=[
[47.003088, -96.929448],
[46.817268, -96.810024],
[46.842064, -96.796163],
[46.644816, -96.408616],
[46.860142, -96.751281],
[46.789894, -96.807715],
[46.844050, -96.856140],
[46.921464, -96.780208],
[46.585881, -96.843754],
[46.860947, -96.913269],
[46.844127, -96.813441],
[46.852872, -96.891369],
[46.828628, -96.775868]
];
var map=new google.maps.map(document.getElementById('map'){
缩放:8,
中心:新google.maps.LatLng(46.827,-96.846),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var标记=[];
对于(var i=0;i最小值&&zoom<最大值){
对于(var i=0;i
非常感谢您的帮助。请原谅我的不知道,但是我应该把它放在代码中的什么地方呢?我已经把minValue和maxValue留空了。只要把你的价值观。我想这样可以。如果是的话,别忘了将你的问题标记为已回答。我们非常感谢你,这很有效,但有一个问题需要解决。当我加载地图时,标记会显示出来。它们在我缩放后消失,并在较低的缩放级别再次显示(如我所愿)。我怎样才能防止他们一开始就出现。我使用此页面测试是否有帮助:for(var I=0;Ivar locations = [ [47.003088, -96.929448], [46.817268, -96.810024], [46.842064, -96.796163], [46.644816, -96.408616], [46.860142, -96.751281], [46.789894, -96.807715], [46.844050, -96.856140], [46.921464, -96.780208], [46.585881, -96.843754], [46.860947, -96.913269], [46.844127, -96.813441], [46.852872, -96.891369], [46.828628, -96.775868] ]; var map = new google.maps.Map(document.getElementById('map'), { zoom: 8, center: new google.maps.LatLng(46.827, -96.846), mapTypeId: google.maps.MapTypeId.ROADMAP }); var markers = []; for (var i = 0; i < locations.length; i++) { var marker = new google.maps.Marker({ position: new google.maps.LatLng(locations[i][0], locations[i][1]), map: map }); markers.push(marker); } var minValue = , maxValue = ; google.maps.event.addListener(map, 'zoom_changed', function() { var zoom = map.getZoom(); if( zoom > minValue && zoom < maxValue) { for (var i = 0; i < locations.length; i++) { markers[i].setMap(map); } } else { for (var i = 0; i < locations.length; i++) { markers[i].setMap(null); } } });