过滤谷歌地图不起作用(JS)

时间:2017-11-09 12:02:09

标签: javascript c# asp.net-mvc google-maps google-maps-api-3

我有JS脚本文件,我从后端获取标记并初始化地图

这是代码:

    function initMap() {
    map = new google.maps.Map(document.getElementById('map'),
        {
            zoom: 5,
            center: { lat: 51.0742853, lng: 11.0294547 },
            mapTypeId: 'roadmap'
        });
    var centerControlDiv = document.createElement('div');
    var centerControlDiv2 = document.createElement('div');
    var centerControl = new CenterControl(centerControlDiv, map);
    var centerControl2 = new CenterControl1(centerControlDiv, map);

    centerControlDiv.index = 1;
    map.controls[google.maps.ControlPosition.TOP_CENTER].push(centerControlDiv);
    getDriving();
} //map initialization
// get Driving and show on layer
function getDriving() {
    var url = $('#map').data('request-url2');
    $.getJSON(url,
        function (data) {


            $.each(data,
                function (i, item) {
                    marker.push({
                        'location': new google.maps.LatLng(item.Latitude, item.Longitude),
                        'map': map,
                        'weight': item.Speed,
                        'radius': 10,
                        'date': item.CurrentDateTime
                    });
                });
            var pointArray = new google.maps.MVCArray(marker);

            heatmap = new google.maps.visualization.HeatmapLayer({
                data: pointArray
            });
            heatmap.setMap(map);
        });
};  

我需要按日期过滤它们

所以我写了这个函数

 $('#filter').on('click',
   function () {
       var startValue = $('#startDate').val(moment($(this).val()).format('DD/MM/YYYY'));
       var endValue = $('#endDate').val(moment($(this).val()).format('DD/MM/YYYY'));
       map.markers = [];
       map.markers.push(marker);
       console.log(map.markers);
       $.each(map.markers, function (i, marker) {
           if (marker.date === startValue)
               marker.setVisible(false);
           else
               marker.setVisible(true);
       });
   });

在控制台中,我看到了所有标记

这是截图 Screen

但我在控制台中出现此错误:

  

未捕获的TypeError:marker.setVisible不是函数

我如何解决?

1 个答案:

答案 0 :(得分:1)

您应该使用setMap()而不是setVisible()

if (marker.date === startValue)
           marker.setMap(null);
       else
           marker.setMap(map);

显然,地图对象必须通过点击功能

进行访问