2017-11-16 3 views
1

I-Skript, das Marker auf Heatmap zeigenWählen Sie Daten in Array zwischen Start- und Enddatum

Hier Skript

function getDriving() { 
    markers.length = 0; 
    var todayval = new Date(); 
    var url = $('#map').data('request-url2'); 
    $.getJSON(url, 
     function (data) { 
      $.each(data, 
       function (i, item) { 

        markers.push({ 
         'location': new google.maps.LatLng(item.Latitude, item.Longitude), 
         'map': map, 
         'weight': item.Speed, 
         'radius': 10, 
         'date': item.CurrentDateTime, 
         'imei': item.Imei 
        }); 
       }); 

      $.each(markers, function (i, marker) { 
       var getDate = marker.date.match(/\d/g).join(''); 
       var markerDate = new Date(parseFloat(getDate)); 
       console.log(markerDate); 
       if (markerDate.getDate() === todayval.getDate()) { 
        todaymarkersfiltered.push(marker); 
       } 
      }); 
      var pointArray = new google.maps.MVCArray(todaymarkersfiltered); 
      console.log(pointArray); 
      heatmap = new google.maps.visualization.HeatmapLayer({ 
       data: pointArray 
      }); 
      heatmap.setMap(map); 
     }); 
}; 

In View habe ich startdate und EndDate

nun filtere ich nur durch Anfangsdatum.

Hier Skript

filtered.length = 0; 
$('#filter').on('click', 
    function() { 
     heatmap.setMap(null); 
     var startValue = $('#startDate').val().split("/"); 
     $.each(markers, function (i,marker) { 
      var getDate = marker.date.match(/\d/g).join(''); 
      var markerDate = new Date(parseFloat(getDate)); 
      var valDate = new Date(startValue[2], startValue[1] - 1, startValue[0]); 
      if (markerDate.getDate() === valDate.getDate() && (marker.imei === imei || imei === null)) { 
       filtered.push(marker); 
      } 
     }); 
     var pointArray = new google.maps.MVCArray(filtered); 
     console.log(pointArray); 
     heatmap = new google.maps.visualization.HeatmapLayer({ 
      data: pointArray 
     }); 
     heatmap.setMap(map); 

    }); //filtering by date and imei code of device 

Aber wie kann ich Daten zwischen Start- und Enddatum filtern.

So zum Beispiel habe ich Startdatum 11/14/2017 und Enddatum 16.11.2017. Ich muss alle Daten zeigen, wo markerDate in diesem Bereich ist. Enddaten werden ebenfalls von der Eingabe übernommen. var endValue = $('#endDate').val().split("/");

Vielen Dank für Ihre Hilfe.

Antwort

1

Sie können einfach .filter() method, dies zu tun:

var startValue = new Date($('#startDate').val()); 
var endValue = new Date($('#endDate').val()); 

var filtered = markers.filter(function(marker) { 
    var markerDate = new Date(marker.date); 
    return (markerDate > startValue && markerDate < endValue); 
}); 
+0

Sie bedeuten von statt schreiben '$ .each (Marker-Funktion (i, Marker) {var getDate = marker.date.match (/ \ d/g) .join (''); var markerDate = neues Datum (parseFloat (getDate)); var valDate = neues Datum (startValue [2], startValue [1] - 1, startValue [0]) ; if (markerDate.getDate() === valDate.getDate() && (marker.imei === imei || imei === null)) { filtered.push (marker); } }); '? –

+0

@ S. E Ja, das ist es. Es sollte es automatisch filtern. –

+0

in Ordnung. Thanks, wird es versuchen –

Verwandte Themen