Javascript 为每个级别设置事件缩放谷歌地图?
当我缩放每个级别的google地图时,如何指定加载一个kml文件? 这是我的代码:Javascript 为每个级别设置事件缩放谷歌地图?,javascript,google-maps,Javascript,Google Maps,当我缩放每个级别的google地图时,如何指定加载一个kml文件? 这是我的代码: <!DOCTYPE html> <html> <head> <title>Getting Properties With Event Handlers</title> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <met
<!DOCTYPE html>
<html>
<head>
<title>Getting Properties With Event Handlers</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
#map {
height: 100%;
}
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var kmlLayer;
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 8,
center: { lat: 10.89779, lng: 106.64619 }
});
map.addListener('idle', function () {
if (map.getZoom() == 9) {
//alert('aa');
kmlLayer = new google.maps.KmlLayer({
url: 'a.kml',
map: map
});
}
else if (map.getZoom() == 10) {
kmlLayer = new google.maps.KmlLayer({
url: 'b.kml',
map: map
}
});
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=MY_API&callback=initMap">
</script>
</body>
</html>
使用事件处理程序获取属性
#地图{
身高:100%;
}
html,
身体{
身高:100%;
保证金:0;
填充:0;
}
var kmlLayer;
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:8,
中心:{lat:10.89779,lng:106.64619}
});
map.addListener('idle',函数(){
if(map.getZoom()==9){
//警报(“aa”);
Kmlayer=new google.maps.Kmlayer({
url:'a.kml',
地图:地图
});
}
else if(map.getZoom()==10){
Kmlayer=new google.maps.Kmlayer({
url:'b.kml',
地图:地图
}
});
}
这意味着当map.getZoom()==9
时,地图将按文件a.kml
map绘制。getZoom()==10
将按b.kml
文件绘制,由a.kml
文件创建的所有细节将被删除
但是当使用a.kml
文件创建缩放和细节时,上面的代码不会平滑。当Map.getZoom()==10
时,它不会被删除
请帮助我解决此问题。谢谢在显示新的Kmlayer之前,您需要隐藏现有Kmlayer。例如:
var kmlLayer;
map.addListener('idle', function () {
if (map.getZoom() == 9) {
if (kmlLayer && kmlLayer.setMap) kmlLayer.setMap(null);
kmlLayer = new google.maps.KmlLayer({
url: 'a.kml',
map: map
});
}
else if (map.getZoom() == 10) {
if (kmlLayer && kmlLayer.setMap) kmlLayer.setMap(null);
kmlLayer = new google.maps.KmlLayer({
url: 'b.kml',
map: map
});
}
(如果为所有缩放级别定义了Kmlayers,则可能需要将隐藏现有图层的代码移动到if
之外)