Dynamic Data

VERSION 1.17.0
PUBLIC PREVIEW

To use the Maps SDK in your application you need to obtain a TomTom API key by following these instructions. Remember to keep your API key secure.

This API is unavailable on a Freemium or Pay As You Grow (PAYG) basis. [Request access]() to contact our sales team.

The Dynamic Data module is comprised of four APIs: fuel prices, parking availability, parking prices and EV charging availability. These APIs provide up-to-date information and can be useful for drivers to decide where to park, refill and charge.

Initializing

To use our dynamic data feed, you must configure its credentials and add the SDK as a dependency:

  1. Get your TomTom API Key and configure the project as described in the Project setup guide.
  2. Add the Dynamic data module dependency in the build.gradle.kts of your application module and synchronize the project.
    implementation("com.tomtom.sdk.search:dynamic-data-online:1.17.0")

Fuel prices

The fuel prices API provides information on the current fuel prices at a specified fuel station. The only required request parameter is the fuel station identifier, which can be fetched from Fuzzy Search. The identifier is in the SearchResultId of the SearchResult, labeled fuelPriceId.

Not every SearchResult contains fuel price information.

1val fuelPriceOptions =
2 searchResult.searchResultId.fuelPriceId?.let { fuelPriceId ->
3 FuelPriceOptions(fuelPriceId)
4 }

A successful request returns a FuelPriceResponse. If the request fails, a SearchFailure is returned.

1fuelPriceProvider = OnlineDynamicDataProviderFactory.createFuelPriceProvider(context, "YOUR_TOMTOM_API_KEY")
2fuelPriceOptions?.let { options ->
3 fuelPriceProvider.requestFuelPrices(
4 options,
5 object : FuelPriceCallback {
6 override fun onSuccess(result: FuelPriceResponse) {
7 // YOUR CODE GOES HERE
8 }
9
10 override fun onFailure(failure: SearchFailure) {
11 // YOUR CODE GOES HERE
12 }
13 },
14 )
15}

Parking availability

The parking availability API provides up-to-date information about the number of available parking places and the trend in occupancy at a specified parking location. The only required parameter is the parking information identifier.

You can get this identifier from the result of a Fuzzy Search. The identifier is in the SearchResultId of the SearchResult, labeled parkingDetailId.

Not every SearchResult contains parking information.

1val parkingAvailabilityOptions =
2 searchResult.searchResultId.parkingDetailId?.let { parkingDetailId ->
3 ParkingAvailabilityOptions(parkingDetailId)
4 }

A successful request returns ParkingAvailabilityResponse. If the request fails, a SearchFailure is returned.

1parkingDetailProvider =
2 OnlineDynamicDataProviderFactory.createParkingDetailProvider(
3 context,
4 "YOUR_TOMTOM_API_KEY",
5 )
6parkingAvailabilityOptions?.let { options ->
7 parkingDetailProvider.requestParkingAvailability(
8 options,
9 object :
10 ParkingAvailabilityCallback {
11 override fun onSuccess(result: ParkingAvailabilityResponse) {
12 // YOUR CODE GOES HERE
13 }
14
15 override fun onFailure(failure: SearchFailure) {
16 // YOUR CODE GOES HERE
17 }
18 },
19 )
20}

Parking prices

The parking prices API provides up-to-date parking price information of the specified parking location. The only required parameter is the parking information identifier.

You can get this identifier by doing a Fuzzy Search. The identifier is in the SearchResultId of the SearchResult, labeled parkingDetailId.

Not every SearchResult contains parking information.

1val parkingPriceOptions =
2 searchResult.searchResultId.parkingDetailId?.let { parkingDetailId ->
3 ParkingPriceOptions(
4 parkingDetailId = parkingDetailId,
5 startTime = Calendar.getInstance(),
6 duration = 3.hours,
7 )
8 }

You can also pass a startTime, which defines the beginning of the parking period and a duration, which defines how long the parking is needed.

A successful request returns a ParkingPriceResponse. If the request fails, a SearchFailure is returned.

1parkingDetailProvider =
2 OnlineDynamicDataProviderFactory.createParkingDetailProvider(
3 context,
4 "YOUR_TOMTOM_API_KEY",
5 )
6parkingPriceOptions?.let { options ->
7 parkingDetailProvider.requestParkingPrice(
8 options,
9 object : ParkingPriceCallback {
10 override fun onSuccess(result: ParkingPriceResponse) {
11 // YOUR CODE GOES HERE
12 }
13
14 override fun onFailure(failure: SearchFailure) {
15 // YOUR CODE GOES HERE
16 }
17 },
18 )
19}

EV charging availability

The EV charging availability API provides information on the availability of Electric Vehicle (EV) charging points at a specific charging park. The only required parameter is the charging availability identifier, which can be fetched from Fuzzy Search. The identifier is in the SearchResultId of the evChargingAvailabilityId.

Not every SearchResult contains charging station information.

1val evChargingAvailabilityOptions =
2 searchResult.searchResultId.evChargingAvailabilityId?.let { chargingAvailabilityId ->
3 EvChargingAvailabilityOptions(
4 availabilityId = chargingAvailabilityId,
5 connectors =
6 setOf(
7 ConnectorType.Iec62196Type1Ccs,
8 ConnectorType.Iec62196Type3,
9 ),
10 minPower = Power.kilowatts(5),
11 maxPower = Power.kilowatts(15),
12 )
13 }

Additionally, you can pass optional restrictions when constructing EvChargingAvailabilityOptions: connectors, minPower and maxPower.

A successful request returns an EvChargingAvailabilityResponse. If the request fails, a SearchFailure is returned.

1evChargingAvailabilityProvider =
2 OnlineDynamicDataProviderFactory.createEvChargingAvailabilityProvider(context, "YOUR_TOMTOM_API_KEY")
3
4evChargingAvailabilityOptions?.let { options ->
5 evChargingAvailabilityProvider.requestEvChargingAvailability(
6 options,
7 object : EvChargingAvailabilityCallback {
8 override fun onSuccess(result: EvChargingAvailabilityResponse) {
9 // YOUR CODE GOES HERE
10 }
11
12 override fun onFailure(failure: SearchFailure) {
13 // YOUR CODE GOES HERE
14 }
15 },
16 )
17}