*/current, location data

API with processed real-time geolocation data, for TV graphics, speed monitor, gap time calculation, ...

Request

URL https://racemap.com/api/data/v1/:eventId/current Method GET

Live sample https://racemap.com/api/data/v1/6336f41309be310001a5894b/current Corresponding map https://racemap.com/player/100KmDuathlon2018_API-liveSample

Optional query parameters

Set various query parameters according to your need when calling the API endpoint, e.g. in order to smoothen gap values.

You can call the same API endpoint with different query parameters at the same time. You can also combine queries with & in one call eg. https://racemap.com/api/data/v1/6336f41309be310001a5894b/current?liveDelay=600&interpolation=false&currentSpeedDuration=600&deviceId=6336f41309be310001a58977

Response

Event object

Participant object

Current object

  • current-object provides the latest data

  • (*) calculated only for events with a shadowtrack, projection of device locations on the shadowtrack within 100 m distance from shadowtrack

  • gapAverage, gap, gapChase and gapDistance are calculated for the leader by default. Leader: device with the smallest toFinish value. Attention: Each time a leader reaches the finish the device closest to the finish becomes the new leader. The speed value of the next leader may impact fluctuating gap values. Reference: If query with deviceId or startNumber, then calculation with reference values instead of leader.

Sample response

{
  "name": "Sample live API | 100km Duathlon",
  "location": "🇩🇪 Dresden",
  "startTime": "2022-11-21T10:13:31Z",
  "endTime": "2022-11-21T14:12:55Z",
  "starters": [
    {
      "id": "6336f41309be310001a5894c",
      "name": "🔥 Flaming 🔥 Sideburns 🔥",
      "startNumber": "001",
      "importId": "UniqueImportId_1",
      "current": {
        "time": "2022-11-21T14:04:30.421Z",
        "lng": 13.878789334666667,
        "lat": 51.070914418,
        "elv": 244,
        "speed": 5.614035087719298,
        "speedRaw": 4.273781783603631,
        "fromStart": 47792.806666666664,
        "toFinish": 50567.193333333336,
        "distanceToShadowTrack": 6.6575740360137345,
        "eta": 9007.281,
        "gapAverage": 2768,
        "gap": 2071.573,
        "gapChase": 2213.993,
        "gapDistance": 12429.438666666669
      }
    },
    {
      "id": "6336f41309be310001a58977",
      "name": "Vorausfahrer",
      "startNumber": "📢",
      "importId": null,
      "current": {
        "time": "2022-11-21T14:04:30.421Z",
        "lng": 13.819698388666668,
        "lat": 51.10816512466666,
        "elv": 239,
        "speed": 6,
        "speedRaw": 5.752663856878707,
        "fromStart": 60222.24533333333,
        "toFinish": 38137.75466666667,
        "distanceToShadowTrack": 4.357202339570443,
        "eta": 6356.292,
        "gapAverage": 14,
        "gap": 0,
        "gapChase": 0,
        "gapDistance": 0
      }
    },
    {
      "id": "6336f41309be310001a5897e",
      "name": "Harzer Roller Club",
      "startNumber": "022",
      "importId": null,
      "current": null
    }
  ]
}

Smoothen values in the API

The below parameters and settings smoothen the values in the API.

  • Call the gapAverage value instead of gap value

  • Interpolation=true

  • Query parameter currentSpeedDuration

Use gapAverage instead of gap if you need smoothly changing gap values e.g. for TV production.

Increase the currentSpeedDuration query parameter to smooth the speed values in the API.

Subsequent calculations

You can calculate on your side using the */current API.

Gap distance between two participants: fromStart (participant 1) - fromStart (participant 2)

Gap duration between two participants:

  • option 1: gapAverage (participant 2) - gapAverage (participant 1) => value with flatten peaks

  • option 2: eta (participant 2) - eta (participant 1)

  • option 3: gap (participant 2) - gap (participant 1)

Identify the leader: the smallest value of toFinish

Last updated

Logo

Maps: ©Mapbox ©OpenStreetMap ©Racemap