Вы закомментировали глобальные переменные, необходимые для работы кода.Измените это;
// var layer1 = null;
// var layer2 = null;
// var layer3 = null;
// var map = null;
На:
var layer1 = null;
var layer2 = null;
var layer3 = null;
var map = null;
И удалите var
перед строками, которые определяют те, в функции initMap
.
подтверждение концепции скрипки
html,
body,
#map {
height: 90%;
width: 100%;
margin: 0px;
padding: 0px
}
<div id="map"></div>
<section>
<div>
<h1>select layer</h1>
</div>
<div>
<h2>xxxxxxx</h2>
<input type="checkbox" name="show_hide_layer1" onchange="toggleLayer(layer1)" />
<label>province</label>
<input type="checkbox" name="show_hide_layer2" onchange="toggleLayer(layer2)" />
<label>amphoe</label>
<input type="checkbox" name="show_hide_layer3" onchange="toggleLayer(layer3)" />
<label>tambon</label>
</div>
</section>
<script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap">
</script>
<script>
var layer1 = null;
var layer2 = null;
var layer3 = null;
var map = null;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {
lat: 13.809,
lng: 100.504
},
zoom: 7,
gestureHandling: 'cooperative'
});
layer1 = new google.maps.FusionTablesLayer({
query: {
select: '*',
from: '1ps-56Oh_BU9ROLblH5pnRIwur0NwCj1CZZDcJfiv'
},
styles: [{
polygonOptions: {
fillColor: '#00FF00',
fillOpacity: 0.3
}
}]
});
layer2 = new google.maps.FusionTablesLayer({
query: {
select: '*',
from: '1ZRJhrDJvOKY03txK1KOap725DCnvKcb-E1HSXFRz'
},
styles: [{
polygonOptions: {
fillColor: '#ff000',
fillOpacity: 0.3
}
}]
});
layer3 = new google.maps.FusionTablesLayer({
query: {
select: '*',
from: '1nTTiRj1FDh-zuvtSuRWSWYbVU_izfkOB2ulN1MFM'
},
styles: [{
polygonOptions: {
fillColor: '#0000ff',
fillOpacity: 0.3
}
}]
});
}
function toggleLayer(this_layer) {
if (this_layer.getMap()) {
this_layer.setMap(null);
} else {
this_layer.setMap(map);
}
}
</script>