I'm trying to add TomTom maps to my android application that is built with Kotlin, but it gives me the error Tomtom Maps SDK for android failed to load tile and shows an empty map as shown in the image below :
And here are my files and detailed configurations I'm using:
- In the project level Gradle file I have :
allprojects {
repositories {
google()
jcenter()
maven {
url "https://maven.tomtom.com:8443/nexus/content/repositories/releases/"
}
}
}
- In the app level Gradle file I have :
dependencies {
implementation("com.tomtom.online:sdk-maps:2.4244")
}
- And I've added the
APKto theAndroidManifestsfile :
<meta-data
android:name="OnlineMaps.Key"
android:value="<my-Key-here>" />
- Also, the map fragment is added to the .XML files :
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapActivity">
<fragment
android:id="@+id/mapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.tomtom.online.sdk.map.MapFragment"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
- And finally, here is the Kotlin code used to start the map :
//lateinit late initialization of non-null type variables
private lateinit var map: TomtomMap
private lateinit var fusedLocationClient: FusedLocationProviderClient
private lateinit var lastLocation: Location
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_map)
val mapFragment = supportFragmentManager
.findFragmentById(R.id.mapFragment) as MapFragment
mapFragment.getAsyncMap(this)
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
}
companion object {
private const val LOCATION_PERMISSION_REQUEST_CODE = 101
}
private fun setUpMap() {
if (ActivityCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), LOCATION_PERMISSION_REQUEST_CODE)
return
}
map.isMyLocationEnabled = true
fusedLocationClient.lastLocation.addOnSuccessListener(this) {
location ->
if (location != null){
lastLocation = location
val currentLatLng = LatLng(location.latitude, location.longitude)
val balloon = SimpleMarkerBalloon("You are Here")
map.addMarker(MarkerBuilder(currentLatLng).markerBalloon(balloon))
map.centerOn(CameraPosition.builder(currentLatLng).zoom(7.0).build())
}
}
}
override fun onMapReady(@NonNull tomtomMap: TomtomMap) {
this.map = tomtomMap
setUpMap()
}
