Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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 api v3_Javascript_Google Maps - Fatal编程技术网

Javascript 根据类型属性隐藏/显示某些标记,google maps api v3

Javascript 根据类型属性隐藏/显示某些标记,google maps api v3,javascript,google-maps,Javascript,Google Maps,我试图根据标记的“类型”在谷歌地图上隐藏/显示标记。我从JSON获取“类型”。我已经搜索了google文档(如果我错了,请纠正我),但他们的示例似乎不起作用,并且没有解释如何根据从JSON中提取的属性删除/显示标记。这是他们的例子 通过使用if语句,根据每种类型,我已经有了不同的标记,但仍然无法选择隐藏或显示它们。下面我写了我的jquery尝试,但它不起作用 var type_1_icon = 'img/icon_1.png'; var type_2_icon =

我试图根据标记的“类型”在谷歌地图上隐藏/显示标记。我从JSON获取“类型”。我已经搜索了google文档(如果我错了,请纠正我),但他们的示例似乎不起作用,并且没有解释如何根据从JSON中提取的属性删除/显示标记。这是他们的例子

通过使用if语句,根据每种类型,我已经有了不同的标记,但仍然无法选择隐藏或显示它们。下面我写了我的jquery尝试,但它不起作用

        var type_1_icon = 'img/icon_1.png';
        var type_2_icon = 'img/icon_2.png';

        this.display_markers = function(){

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

        var xml = data.responseXML;

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

        for (var i = 0; i < markers.length; i++) {
        var site_name = markers[i] .getAttribute("site_name");
        var site_country = markers[i] .getAttribute("site_country");
        var site_state = markers[i] .getAttribute("site_state");
        var site_desc = markers[i] .getAttribute("site_desc");
        var type = markers[i] .getAttribute("type");
        var site_lat = markers[i] .getAttribute("site_lat");
        var site_lng = markers[i] .getAttribute("site_lng");
        var point = new google.maps.LatLng(
            parseFloat(markers[i] .getAttribute("site_lat")),
            parseFloat(markers[i] .getAttribute("site_lng")));

        var html =  "  /* HTML CONTENT */  ";

        if (type == 'type_1')
        {
            var marker = new google.maps.Marker({
                position: point,
                map: map,
                icon: type_1_icon
            });
        }
        else if (type == 'Type_2')
        {
            var marker = new google.maps.Marker({
                map: map,
                position: point,
                icon: type_2_icon
            });
        }
        else
        {
            var markericon ='images/icon_yellow.png';
            var marker = new google.maps.Marker({
                map: map,
                position: point,
                icon: markericon
            });
        }

      var hidden_marker = false;

        function toggleGroup(type) {
          for (var i = 0; i < markers[type].length; i++) {
            var marker = markers[type][i];
            if (hidden_marker == true) {
              marker.setMap(map);
              hidden_marker = false;
            } else {
              marker.setMap(null);
              hidden_marker = true;
            }
          }
        }

        // UI Click buttons

        $('#fltr_btn').click(function(){
              toggleGroup('type_1');
        });

    bindInfoWindow(marker, map, InfoWindow, html);

    }
    });
var type_1_icon='img/icon_1.png';
var type_2_icon='img/icon_2.png';
this.display_markers=函数(){
下载URL(“xml_output.php”,函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i
site\u dive\u类型看起来有误。如果(marker.ishiden)看起来是错误的-您只是将地图设置为null以隐藏标记,但这不会将其状态更改为hidden它只是意味着您无法看到它。感谢该标记,我编辑了site_dive_类型。这是问题中的一个错误。您需要一个变量来跟踪标记是否可见,然后将其地图设置为null以隐藏标记em并将他们的地图设置回正确的地图以再次显示他们。谢谢,是的,我更新了toggleGroup功能,现在一切正常吗?