Я создаю интерактивную карту кампуса с помощью Google Maps API и KML. У меня есть карта с наложением на землю и слоем маркеров KML. Я пытаюсь понять, как заставить слой KML переключаться. В настоящее время я установил его для переключения с помощью флажка, но он отключается только при первом нажатии флажка. Любые последующие клики ничего не делают. Слой KML просто исчезает. У меня есть ощущение, что это, вероятно, простое исправление javascript, но я новичок в javascript и не могу понять это. Кто-нибудь знает, что я делаю неправильно? Заранее спасибо за помощь.
Вот весь мой код:
<script type="text/javascript">
function initialize() {
var map;
var omaha = new google.maps.LatLng(41.265437, -95.947405);
var MY_MAPTYPE_ID = 'blue';
var stylez = [
{
featureType: "all",
stylers: [
{ hue: "#004A96" },
]
},
{
featureType: "all",
elementType: "labels",
stylers: [
{ hue: "#000000" },
]
},
{
featureType: "road",
elementType: "local",
stylers: [
{ hue: "#24356B" },
{ saturation: 55 },
{ lightness: 20 }
]
},
{
featureType: "poi.school",
elementType: "geometry",
stylers: [
{ hue: "#24356B" },
{ saturation: 55 },
{ lightness: 20 }
]
}
];
var imageBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(41.2599,-95.9601),
new google.maps.LatLng(41.2718,-95.9367));
var mapOptions = {
zoom: 15,
center: omaha,
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, MY_MAPTYPE_ID]
},
mapTypeId: MY_MAPTYPE_ID
};
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var styledMapOptions = {
name: "Blue"
};
var jayzMapType = new google.maps.StyledMapType(stylez, styledMapOptions);
map.mapTypes.set(MY_MAPTYPE_ID, jayzMapType);
var oldmap = new google.maps.GroundOverlay(
"http://www.mcography.com/beta/CampusMap.png",
imageBounds);
oldmap.setMap(map);
var kmlLayer01URL = 'http://www.mcography.com/beta/CUADA.kml';
var kmlOptions = {
preserveViewport: 1
};
kmlLayer01 = new google.maps.KmlLayer(kmlLayer01URL, kmlOptions);
kmlLayer01.setMap(map);
// initially show KML Layer 01
document.getElementById('show_hide_KML_Layer_01').checked = true;
}
function toggleKMLLayer01() {
if (!document.getElementById('show_hide_KML_Layer_01').checked)
kmlLayer01.setMap(null);
else
kmlLayer01.setMap(map); }
</script>
</head>
<body onload="initialize()">
<p><input type="checkbox" id="show_hide_KML_Layer_01" onclick="toggleKMLLayer01();" />ADA Layer</p>
<div id="map_canvas"></div>
</body>
map
? Это в рамках, когда вы вызываетеsetMap
вtoggleKMLLayer01
? - person James Allardice   schedule 30.05.2012}
на полпути к JS в вашем вопросе... где соответствующий{
? - person James Allardice   schedule 30.05.2012map
, вы можете видеть, что оно выходит за рамки. Он доступен только внутри функцииinitialize
. Переместитеvar map;
за пределыinitialize
, чтобы он попал в глобальную область (как упоминает @HeitorChang в его ответе). - person James Allardice   schedule 30.05.2012