Проверка, увеличивается ли массив - PullRequest
0 голосов
/ 19 января 2020

Я получаю каждые 10 секунд данные из API. Это массив, содержащий геокоординаты. Но теперь я хочу проверить, увеличивается ли массив каждые 10 секунд или нет. Я думаю, что я хочу получить результат в логическом. Я также думаю, что должен поместить это в setInterval, но действительно не знаю как. Есть ли способ исправить это?

import React from 'react';
import { 
  GoogleMap, 
  withScriptjs, 
  withGoogleMap, 
  Marker,
  Polyline} 
from 'react-google-maps';
import '../App.css';
import { Link } from "react-router-dom"; 
import Test4 from "./Test4";


class Map extends React.Component {
state = {
  loading: true,
  coordinates: null,
  time: null
  
}

fetchData = async() => {
  const url = "https://ttr.vsbbn.nl:4000/gps_history?team_id=7";
  const response = await fetch(url);
  const data = await response.json();
  this.setState({coordinates: data, loading: false });
}

async componentDidMount(){
  await this.fetchData();

  setInterval( () =>{
    this.fetchData();
    
    console.log('fetching');
    // const url = "https://ttr.vsbbn.nl:4000/gps_history?team_id=5";
    // const response = await fetch(url);
    // const data = await response.json();
    // this.setState({coordinates: data, loading: false });
  }, 1000 * 10 )

}

  render = () => {
    // console.log(this.state.coordinates);
    const { loading, coordinates, time} = this.state;
    if(loading == false){

      let fetchCoordinates = coordinates.map(coordinate => {
        const single_coord = {lat: parseFloat(coordinate.lat), lng: parseFloat(coordinate.lon)}
          return single_coord;
      }) 

        // console.log(fetchCoordinates);
        // console.log(this.path);
        //var a = Number(test[0].lat);
        
      return(
        <>
          <GoogleMap
            defaultZoom={14}
            //defaultCenter={{ lat: 51.917372, lng: 4.485093 }}
            defaultCenter={{ lat: fetchCoordinates[0].lat , lng: fetchCoordinates[0].lng }}

          >
            <Polyline path={fetchCoordinates} options={{ strokeColor: "#FF0000 " }} />
            <Marker position={fetchCoordinates[fetchCoordinates.length - 1]} />
            
        </GoogleMap>
        
        </>
      )
    }else{
      return(<div>Neem contact op met de developers. Server staat namelijk uit!</div>)
    }
    // return (
    //   <>
    //   {!loading || coordinates ? (
        
    //       <GoogleMap
    //         defaultZoom={16}
    //         defaultCenter={{ lat: 51.916184, lng: 4.487743 }}
    //         >
    //           <Polyline path={this.test} options={{ strokeColor: "#FF0000 " }} />
    //           <Marker position={this.test[this.test.length - 1]} />
              
    //       </GoogleMap>
        
    //   ): (
    //     <>
    //     loading 
    //     </>
    //   )}
    //   </>
    // )
  }
}

const WrappedMap = withScriptjs(withGoogleMap(Map));

export default() => (  
  <div>
    <br/>
    <b>Klik <Link to="/home" className="btn btn-primary">hier</Link> om terug te gaan naar teamoverzicht</b>
    <br/>
    <br/>
    <h3>Live kaart</h3>
    <p>
      Teamnaam: Hogeschool Rotterdam 3 (LIVE)<br/>
      Live:<span class="dot2"></span><br/>
      Actuele snelheid: 0 km per uur <br/>
      Gemiddelde snelheid: 0.05  km per uur <br/>
      Verwachte aankomsttijd Rotterdam: Onbekend <br/>
      <div></div>
    </p>  

    <div style={{width: '50vw', height: '50vh'}}> 
      <WrappedMap googleMapURL = {'https://maps.googleapis.com/maps/api/js?key=AIzaSyB9w0T_VMezCy1AaqxXpRie9ChrbVCt1O4&v=3.exp&libraries=geometry,drawing,places'}
      loadingElement={<div style={{ height: `100%` }} />}
      containerElement={<div style={{ height: `100%` }} />}
      mapElement={<div style={{ height: `100%` }} />}
      />
    </div>
  </div>
  )
...