2017-11-09 7 views
-1

私はGetDriving()データベースからデータを取得するメソッドを持っています。ここにコードは配列のプロパティがJS(asp.net)で定義されていません

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; 
     } 
    } 

そして、私はそれのようなコントローラでそれを呼び出します。 JSファイルで

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

私はそれらを表示し、このすべて大丈夫と。

ボタンをクリックしてフィルタリングします。ここで

は、スクリプトのコード

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

このエラーを取得するしかし、なぜ、どのようにこの問題を解決するために、私は理解していませんか?

+0

map.markers.push(マーカー)であるとして、マーカーは何ですか?あなたのコードでは明確に定義されていません –

+0

私のポスト@ IrfanTahirKheliを更新しました –

答えて

-1

あなたのケースで最高の
map.markers = map.markers.concat(marker); 

map.markers.push(marker); 

を交換してください:

map.makers = marker; 

あなたmap.markersが空

+0

空の配列を返します –

+0

私はあなたにこのエラーを解決するためのソリューションを与えました:Uncaught TypeError:未定義の 'match'プロパティを読み取ることができません –

+0

マーカー配列が空でないことを確認してくださいそれをmap.markersに追加する@SE –

関連する問題