Javascript marker.setVisible不是Google地图中的函数

Javascript marker.setVisible不是Google地图中的函数,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我的地图显示了json中的点,但是我不能用下面的代码过滤这些点。我认为标记和过滤器之间应该有联系,但我不知道如何联系 var map = new google.maps.Map(document.getElementById('map'), { center: {lat: -34.397, lng: 150.644}, scrollwheel: false, zoom: 8 }); var points = 'http://www.example.com/json.js

我的地图显示了json中的点,但是我不能用下面的代码过滤这些点。我认为标记和过滤器之间应该有联系,但我不知道如何联系

var map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    scrollwheel: false,
    zoom: 8
});

var points = 'http://www.example.com/json.json';

$.getJSON(points, function(json1) {
    $.each(json1, function(key, data) {
        var latLng = new google.maps.LatLng(data.latlng.lat, data.latlng.lng); 
        // Creating a marker and putting it on the map
        var marker = new google.maps.Marker({
            position: latLng,
            map: map,
            category: data.category,
            //icon: iconBase + data.posture + '.svg',
            title: data.title
        });
    });

    filterMarkers = function (posture) {
        for (i = 0; i < json1.length; i++) {
            marker = json1[i];
            // If is same category or category not picked
            if (marker.category == category || category.length === 0) {
                marker.setVisible(true);
            }
            // Categories don't match 
            else {
                marker.setVisible(false);
            }
        }
    }
    $('.button-group a').click( function(e){
        var category = $(this).attr('data-filter');
        filterMarkers(category);
    });

});
var map=new google.maps.map(document.getElementById('map'){
中心:{纬度:-34.397,液化天然气:150.644},
滚轮:错误,
缩放:8
});
var points=http://www.example.com/json.json';
$.getJSON(点,函数(json1){
$.each(json1,函数(键,数据){
var latLng=新的google.maps.latLng(data.latLng.lat,data.latLng.lng);
//创建标记并将其放在地图上
var marker=new google.maps.marker({
位置:latLng,
地图:地图,
类别:data.category,
//图标:iconBase+data.position+'.svg',
标题:data.title
});
});
过滤器标记=功能(姿势){
对于(i=0;i

你有解决办法吗?

好的,我理解下面的评论。为此,我将所有标记放在一个数组中,我的过滤器对这个数组起作用

var map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    scrollwheel: false,
    zoom: 8
});

var points = 'http://www.example.com/json.json';

$.getJSON(points, function(json1) {
    var markers_array = [];
    $.each(json1, function(key, data) {
        var latLng = new google.maps.LatLng(data.latlng.lat, data.latlng.lng); 
        // Creating a marker and putting it on the map
        var marker = new google.maps.Marker({
            position: latLng,
            map: map,
            category: data.category,
            //icon: iconBase + data.posture + '.svg',
            title: data.title
        });

        markers_array.push(marker);

    });

    filterMarkers = function (posture) {
        for (i = 0; i < markers_array.length; i++) {
            marker = markers_array[i];
            // If is same category or category not picked
            if (marker.category == category || category.length === 0) {
                marker.setVisible(true);
            }
            // Categories don't match 
            else {
                marker.setVisible(false);
            }
        }
    }
    $('.button-group a').click( function(e){
        var category = $(this).attr('data-filter');
        filterMarkers(category);
    });
});
var map=new google.maps.map(document.getElementById('map'){
中心:{纬度:-34.397,液化天然气:150.644},
滚轮:错误,
缩放:8
});
var points=http://www.example.com/json.json';
$.getJSON(点,函数(json1){
变量标记_数组=[];
$.each(json1,函数(键,数据){
var latLng=新的google.maps.latLng(data.latLng.lat,data.latLng.lng);
//创建标记并将其放在地图上
var marker=new google.maps.marker({
位置:latLng,
地图:地图,
类别:data.category,
//图标:iconBase+data.position+'.svg',
标题:data.title
});
markers_array.push(标记器);
});
过滤器标记=功能(姿势){
对于(i=0;i
错误是什么?您尝试了哪些步骤来解决此问题?当我尝试单击筛选器定位(
。按钮组a
)时,控制台返回一个错误
marker.setVisible不是一个函数
您所做的
marker.setVisible()
需要是google标记本身。看起来您正试图在一个json元素上执行该函数
json1[i]
。创建google标记时,您需要将其存储在数组中,然后在希望运行该函数时访问正确的数组项。创建标记时,您不需要跟踪它,只需在
$中创建它。每个
范围。然后,当您编写
marker=json1[i]
时,marker很可能不是marker objectOk,那么如何才能使我的标记成为“真正的”标记?