0
Google지도를 처음 사용합니다. ASP.NET 4.0 프로젝트에서 aspx 파일에 Google Maps v3지도가 추가되었으며 맵에있는 네 개의 KML 레이어에 대한 토글 체크 박스를 추가하려고합니다.Google지도 v3 : 'setMap'속성 값을 가져올 수 없습니다.
그러나 확인란을 클릭하면 "Microsoft JScript 런타임 오류 : 'setMap'속성 값을 가져올 수 없습니다. 개체가 null이거나 정의되지 않았습니다. '라는 오류가 발생합니다. 고맙습니다!
다음<body onload="initialize()">
<div id="map-canvas" style="width:100%; height:90%;"></div>
<div id="legend">
<div class="column">
<input type="checkbox" id="landmarksLayer" onclick="toggleKMLLayer(this,'Notable Locations');" checked="checked" />Notable Locations (<img alt="yellow dot" src="Images/GoogleMaps/yellow-dot.png" />)
</div>
</div>
</body>
는 자바 스크립트입니다 : 여기
는 HTML입니다<%--Javascript--%>
<script type="text/JavaScript" src="http://maps.googleapis.com/maps/api/js?key=[I_Removed_My_Key]&sensor=false"></script>
<script type="text/javascript">
var infowindow = new google.maps.InfoWindow({ "maxWidth": 100 });
var map;
var landmarksLayer;
var publicArtLayer;
var blueEmergencyPhonesLayer;
var buildingsLayer;
//toggle
function toggleKMLLayer(chkbox, kmlLayerID) {
//window.alert(kmlLayerID);
if (chkbox.checked) {
//window.alert("checked");
landmarksLayer.setMap(map);
}
else {
//window.alert("unchecked");
landmarksLayer.setMap(null);
}
}
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(33.585737, -101.884804),
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var kmlLayerOptions = {
preserveViewport: true,
suppressInfoWindows: true
};
var landmarksLayer = new google.maps.KmlLayer('http://www.ttu.edu/map/points/landmarks.xml', kmlLayerOptions);
landmarksLayer.setMap(map);
var publicArtLayer = new google.maps.KmlLayer('http://www.ttu.edu/map/points/art.xml', kmlLayerOptions);
publicArtLayer.setMap(map);
var blueEmergencyPhonesLayer = new google.maps.KmlLayer('http://www.ttu.edu/map/points/emergency.xml', kmlLayerOptions);
blueEmergencyPhonesLayer.setMap(map);
var buildingsLayer = new google.maps.KmlLayer('http://www.ttu.edu/map/points/bldgs.xml', kmlLayerOptions);
buildingsLayer.setMap(map);
addKmlClickHandler(landmarksLayer);
addKmlClickHandler(publicArtLayer);
addKmlClickHandler(blueEmergencyPhonesLayer);
addKmlClickHandler(buildingsLayer);
}
// create a new info window for the KML (outage) layer and the geo-coded house marker
function addKmlClickHandler(KmlLayer) {
google.maps.event.addListener(KmlLayer, "click", function (event) {
infowindow.close();
infowindow.setOptions({
pixelOffset: event.pixelOffset,
content: event.featureData.infoWindowHtml,
position: event.latLng
});
infowindow.open(map);
});
}
</script>