Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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 XML生成的Google地图上的复选框过滤器_Javascript_Xml_Google Maps_Google Maps Api 3_Checkbox - Fatal编程技术网

Javascript XML生成的Google地图上的复选框过滤器

Javascript XML生成的Google地图上的复选框过滤器,javascript,xml,google-maps,google-maps-api-3,checkbox,Javascript,Xml,Google Maps,Google Maps Api 3,Checkbox,我很难为下面的代码设置复选框过滤器,这是因为整个过程非常庞大而减少的。除了这些复选框过滤器外,所有功能都正常工作。这些标记都是从php生成的xml文件中提取出来的,就像谷歌的例子一样 我想这是因为标记文件是一个对象HTMLCollection,我得到了标记[I]。setVisible不是一个函数,我尝试了很多东西,但我不知道它是什么。我真的很感谢你帮我做这件事,这是我的最后一步 示例XML数据 <marker name="Some Shop" id="2" type="shops" des

我很难为下面的代码设置复选框过滤器,这是因为整个过程非常庞大而减少的。除了这些复选框过滤器外,所有功能都正常工作。这些标记都是从php生成的xml文件中提取出来的,就像谷歌的例子一样

我想这是因为标记文件是一个对象HTMLCollection,我得到了标记[I]。setVisible不是一个函数,我尝试了很多东西,但我不知道它是什么。我真的很感谢你帮我做这件事,这是我的最后一步

示例XML数据

<marker name="Some Shop" id="2" type="shops" description="Great shop" street_number="350" street_name="Main Road" suburb="Lovely ville" lat="-23.9544011" lng="156.1895873" from="2014-01-01 01:00:00" to="2015-10-01 01:00:00"/>

Javascript

downloadUrl("xml_generator.php", function (data) {

                var xml = data.responseXML;

                var markers = xml.documentElement.getElementsByTagName("marker");

                for (var i = 0; i < markers.length; i++) {

                    var type = markers[i].getAttribute("type");

                    var marker = new google.maps.Marker({
                        map: map,
                        position: point,
                        icon: icon.icon
                    });

                    bindInfoBox(marker, map, ib, myOptions);

                }

        $(document).ready(function(){
        // == shows all markers of a particular category, and ensures the checkbox is checked ==
        function show(category) {
            window.alert("Show " + category + markers);
            for (var i=0; i<markers.length; i++) {
                if (markers[i].getAttribute("type") == category) {
                    markers[i].setVisible(true);
                }
            }
        }

        // == hides all markers of a particular category, and ensures the checkbox is cleared ==
        function hide(category) {
            window.alert("Hide " + category);
            for (var i=0; i<markers.length; i++) {
                if (markers[i].getAttribute("type") == category) {
                    markers[i].setVisible(true);
                }
            }

        }

        $(".toggle").click(function(){
            var cat = $(this).attr("value");
            // If checked
            if ($(this).is(":checked"))
            {
                show(cat);
            } else
            {
                hide(cat);
            }
        });

    });

            });
下载URL(“xml_generator.php”,函数(数据){ var xml=data.responseXML; var markers=xml.documentElement.getElementsByTagName(“标记”); 对于(var i=0;ifor(var i=0;i
标记[i]
是一个HTMLElement对象(或XMLElement)。它没有setVisible方法

您需要一个不同的google.maps.Marker对象“gmarkers”数组,如下所示:

            var xml = data.responseXML;

            var markers = xml.documentElement.getElementsByTagName("marker");

            for (var i = 0; i < markers.length; i++) {

                var type = markers[i].getAttribute("type");

                var marker = new google.maps.Marker({
                    map: map,
                    position: point,
                    icon: icon.icon
                });

                bindInfoBox(marker, map, ib, myOptions);
                gmarkers.push(marker);  //*****

            }
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i
我试过了,并在声明map的代码开头声明了gmarkers,但没有成功。还更新了函数。获取错误时,无法读取var markers下未定义的未声明gmarkers的属性“push”,在for语句之前,作为var gmarkers=[];但现在获取错误时无法读取未定义的属性“setCenter”!在开始时取消了gmarkers,并将标记[i].setVisible(true);更改为gmarkers[i].setVisible(true);所有操作都正常。相关问题相关问题:
            var xml = data.responseXML;

            var markers = xml.documentElement.getElementsByTagName("marker");

            for (var i = 0; i < markers.length; i++) {

                var type = markers[i].getAttribute("type");

                var marker = new google.maps.Marker({
                    map: map,
                    position: point,
                    icon: icon.icon
                });

                bindInfoBox(marker, map, ib, myOptions);
                gmarkers.push(marker);  //*****

            }