数组的属性在JS(asp.net)

时间:2017-11-09 14:04:14

标签: javascript jquery asp.net asp.net-mvc

我有GetDriving()方法从数据库中获取数据。这是代码

  public List<Logging> GetDriving()
    {
        using (TraxgoDB ctx = new TraxgoDB())
        {

            var items = ctx.Logging.Where(x => x.Datatype == Datatype.Position).AsEnumerable().Select(

                x => new Logging
                {
                    Longitude = x.Longitude,
                    Latitude = x.Latitude,
                    Speed = x.Speed,
                    CurrentDateTime = x.CurrentDateTime

                }
            ).ToList();

            return items;
        }
    }

之后我在控制器中称它为它。

  public JsonResult Driving()
    {
        var driving = repoEntities.GetDriving();
        return Json(driving.ToArray(), JsonRequestBehavior.AllowGet);
    }

在JS文件中,我展示了它们,并且这一切都没问题。

我想通过按钮点击来过滤它。

这是脚本代码

var map, heatmap;
var marker = [];
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();
}
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();
           var endValue = $('#endDate').val();
           var myDate = new Date(startValue);
           console.log(myDate);
           map.markers = [];
           map.markers.push(marker);
           //console.log(map.markers);
           $.each(map.markers, function (i, marker) {
               console.log(marker);
               var getDate = marker.date.match(/\d/g).join(''); // "1508341846000"
               var markerDate = new Date(parseFloat(getDate));
               var valDate = new Date(startValue);
               if (markerDate === valDate)
                   marker.setMap(null);
           });

       });

我收到此错误Uncaught TypeError: Cannot read property 'match' of undefined

但我不明白为什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:-1)

替换

 map.markers.push(marker);

使用

  map.markers = map.markers.concat(marker);

最适合您的情况:

map.makers = marker;

,因为map.markers为空