我正在尝试构建一个谷歌地图,使用他们的api从融合表中获取数据并将其显示在地图上。我现在在地图上显示数据。
我想有一个按钮可以打开/关闭数据,在广泛搜索后,我试图实现我找到的解决方案。我的代码设置几乎完全相同,但仍然无法切换数据。
我认为我的示波器出了问题,因为每当我点击按钮时它会给出一个"未捕获的ReferenceError:view1未定义" Javascript Dev Console中的错误。
我也搜索了这一点,起初我相信功能" toggleView1"我没有在全球定义,所以我改变了它,但它仍然无法工作......任何建议都会非常感激,我在这一点上不知所措。
<!DOCTYPE html>
<html>
<head>
<title>WorkingMapTiles</title>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<script src="https://maps.google.com/maps/api/js?key=XXXAPIKEYXX">. </script>
<script>
var view1 = new google.maps.FusionTablesLayer({
query: {
select: '\'LatitudeLongitude\'',
from: 'XXXfusionTableIdXXX'
}
});
function init() {
var mapBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(45.000, -65.000),
new google.maps.LatLng(46.000, -64.000));
var mapMinZoom = 14;
var mapMaxZoom = 17;
var map = new google.maps.Map(document.getElementById("map"));
map.fitBounds(mapBounds);
view1.setMap(map);
}
////FUNCTION NOT GETTING TRIGGERED BY BUTTONS
function toggleView1() {
if(view1.map) {
view1.setOptions({map: null});
} else {
view1.setOptions({map: map});
}
}
</script>
<style>
html, body, #map { width:100%; height:100%; margin:0; padding:0; }
#floating-panel { position: absolute; top: 10px; left: 25%;}
</style>
</head>
<body onload="init()">
<div id="map"></div>
<div id="floating-panel">
<input type="button" value="Toggle view1" onclick="toggleView1();">. </input>
</div>
</body>
</html>
答案 0 :(得分:0)
渊源:
function init() {
var mapBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(45.000, -65.000),
new google.maps.LatLng(46.000, -64.000));
var mapMinZoom = 14;
var mapMaxZoom = 17;
var map = new google.maps.Map(document.getElementById("map"));
map.fitBounds(mapBounds);
var view1 = new google.maps.FusionTablesLayer({
query: {
from: 'XXXfusionTableIdXXX'
}
});
view1.setMap(map);
}
查看一个是在init()的范围内,因为这是定义的位置。从init()的范围中带来了view1的变量定义。请注意,您可能在init()范围内没有view1的另一个定义,或者会有variable shadowing