javascript - Google map - 根据缩放级别显示 Fusion Table 图层

标签 javascript google-maps google-maps-api-3

我尝试根据缩放级别显示 Fusion Table 图层,但 map 上仅显示缩放级别 1 上的第一层,代码中的其他图层根本不显示(无论缩放级别图层是什么)在缩放级别 1 上始终保持在 map 上)。代码如下:

<html>
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

<script type="text/javascript">
var center = new google.maps.LatLng(-40.979898,173.305662);
function init() {
    map = new google.maps.Map(document.getElementById('map_canvas'), {
    center: center,
    zoom: 6,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

var parcel_boundary = new google.maps.FusionTablesLayer({
query: {
    select: 'parcel_boundary_1_9999',
    from: '1ouLS0fm8tPPQNQRpr-bwE4ct-cBkMB-Ru_XttDQ'
  },
  styles: [{
    polygonOptions: {
    strokeColor: "#333333",
    strokeOpacity: 0.8,
    strokeWeight: 0.7,
    fillColor: "#36549C",
    fillOpacity: 0.3
    }
}]
});

var meshblock_1_24113 = new google.maps.FusionTablesLayer({
query: {
    select: 'meshblock_1_24113',
    from: '1nLxnoXlipws7PfjBihBBGL2BVd7OKdxThSuLVRs'
  }       
});

var territorial_authority = new google.maps.FusionTablesLayer({
query: {
    select: 'territorial_authority',
    from: '1YBAtek3BB_sQsxHPJxDTP6Pa6Fy_N12iQ8bIZQQ'
  },
  styles: [{
    polygonOptions: {
    strokeColor: "#333333",
    strokeOpacity: 0.8,
    strokeWeight: 0.7,
    fillColor: "#C42D24",
    fillOpacity: 0.3
    }
}]       
});

var zoom =  map.getZoom();
if (zoom >=1 && zoom <=8) { 
    territorial_authority.setMap(map);
    meshblock_1_24113.setMap(null);
    parcel_boundary.setMap(null);
} 
if (zoom >9 && zoom <=10) {
    territorial_authority.setMap(null);
    meshblock_1_24113.setMap(map);
    parcel_boundary.setMap(null);
}
else if (zoom >11 && zoom <=15) {
    territorial_authority.setMap(null);
    meshblock_1_24113.setMap(null);
    parcel_boundary.setMap(map);
}
;

}
</script>

</head>    
<body id="body" onload="init();">
<div id="map_canvas" style="position:absolute; border-style:solid; border-width:1px; border-color:#333333; left:50%; top:20px; width:1000px; height:860px; z-index:1; margin-left: -500px;"></div>
</body>
</html>

有没有人遇到过这样的问题?

最佳答案

您的代码不包含 map 上“zoom_changed”事件的监听器,只要 map 上的缩放比例发生变化,该事件就会触发并让您根据新的缩放级别进行操作。

google.maps.event.addListener(map,"zoom_changed", function() {
  var zoom =  map.getZoom();
  if (zoom >=1 && zoom <=9) { 
    territorial_authority.setMap(map);
    meshblock_1_24113.setMap(null);
    parcel_boundary.setMap(null);
  } 
  else if (zoom >9 && zoom <=11) {
    territorial_authority.setMap(null);
    meshblock_1_24113.setMap(map);
    parcel_boundary.setMap(null);
  }
  else if (zoom >11) {
    territorial_authority.setMap(null);
    meshblock_1_24113.setMap(null);
    parcel_boundary.setMap(map);
  }
});

关于javascript - Google map - 根据缩放级别显示 Fusion Table 图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17260806/

相关文章:

javascript - 图像叠加不起作用

javascript - 如何确定用户何时正式离开或进入页面

javascript - 如何使我正在创建的灯箱仅在我单击的 div 上打开?

javascript - 如何使谷歌地图中的重叠 POI 可访问

javascript - 为什么 Internet Explorer(或 Chrome)不会显示我的 'Loading...' gif,但 Firefox 会?

javascript - 谷歌地图平移到

javascript - 使用谷歌距离矩阵 API 计算距离,除了少数几个查询外,几乎所有查询都运行良好

android - SupportMapFragment - 二进制 xml 文件行 #2 : Error inflating class fragment

javascript - 通过选择更改标记图标 API google maps v3

api - 谷歌地图 API 与谷歌地图引擎?