Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Maps v3:无法获取属性的值';setMap';_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript Google Maps v3:无法获取属性的值';setMap';

Javascript Google Maps v3:无法获取属性的值';setMap';,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我是谷歌地图的新手。我将Google Maps v3地图添加到ASP.NET 4.0项目中的aspx文件中,并尝试为地图上的四个KML层添加切换复选框 但是,当我单击复选框时,会出现以下错误:“Microsoft JScript运行时错误:无法获取属性“setMap”的值:对象为null或未定义”。谢谢大家! 以下是HTML: <body onload="initialize()"> <div id="map-canvas" style="width:1

我是谷歌地图的新手。我将Google Maps v3地图添加到ASP.NET 4.0项目中的aspx文件中,并尝试为地图上的四个KML层添加切换复选框

但是,当我单击复选框时,会出现以下错误:“Microsoft JScript运行时错误:无法获取属性“setMap”的值:对象为null或未定义”。谢谢大家!

以下是HTML:

<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>

值得注意的地点()
下面是Javascript:

    <%--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>

var infowindow=new google.maps.infowindow({“maxWidth”:100});
var映射;
var地标层;
var-publicArtLayer;
蓝耳鸣病;
var建筑层;
//拨动
函数切换Kmlayer(chkbox,KmlayerId){
//窗口警报(KmlayerId);
如果(chkbox.checked){
//窗口。警报(“已检查”);
landmarksLayer.setMap(地图);
}
否则{
//窗口。警报(“未选中”);
landmarksLayer.setMap(空);
}
}
函数初始化(){
变量映射选项={
中心:新google.maps.LatLng(33.585737,-101.884804),
缩放:15,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById(“地图画布”),mapOptions);
变量KmlayerOptions={
对,,
suppressInfoWindows:true
};
var landmarksLayer=new google.maps.KmlLayer('http://www.ttu.edu/map/points/landmarks.xml,KmlayerOptions);
landmarksLayer.setMap(地图);
var publicArtLayer=new google.maps.KmlLayer('http://www.ttu.edu/map/points/art.xml,KmlayerOptions);
publicArtLayer.setMap(map);
var blueEmergencyPhonesLayer=新的google.maps.KmlLayer('http://www.ttu.edu/map/points/emergency.xml,KmlayerOptions);
blueEmergencyPhonesLayer.setMap(地图);
var buildingsLayer=new google.maps.KmlLayer('http://www.ttu.edu/map/points/bldgs.xml,KmlayerOptions);
buildingsLayer.setMap(map);
addKmlClickHandler(landmarksLayer);
addKmlClickHandler(publicArtLayer);
addKmlClickHandler(blueEmergencyPhonesLayer);
addKmlClickHandler(BuildingLayer);
}
//为KML(大修)层和地理编码房屋标记创建一个新的信息窗口
函数addKmlClickHandler(KmlLayer){
google.maps.event.addListener(Kmlayer,“单击”,函数(事件){
infowindow.close();
infowindow.setOptions({
pixelOffset:event.pixelOffset,
内容:event.featureData.infoWindowHtml,
位置:event.latLng
});
打开(地图);
});
}

您正在为图层创建全局变量:

    var landmarksLayer;
    var publicArtLayer;
    var blueEmergencyPhonesLayer;
    var buildingsLayer;
但是您没有使用它们(在初始化函数中):

变量前面的“var”创建了initialize函数的本地变量的新版本,使全局版本未初始化。您需要初始化全局版本,以便可以在HTML click listener(在全局上下文中执行)中使用它

    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);