Tomtom Maps sdk для Android не удалось загрузить плитку

Я пытаюсь добавить TomTom сопоставляется с моим приложением для Android, созданным с Kotlin, но это дает мне ошибку Tomtom Maps SDK for android failed to load tile и показывает пустую карту, как показано на изображении ниже:

А вот мои файлы и подробные настройки, которые я использую:

  • В файле Gradle уровня проекта у меня есть:
    allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://maven.tomtom.com:8443/nexus/content/repositories/releases/"
        }
    }
}

  • В файле Gradle уровня приложения у меня есть:

    dependencies {
    implementation("com.tomtom.online:sdk-maps:2.4244")
}

  • И я добавил APK к AndroidManifests файл:
    <meta-data
        android:name="OnlineMaps.Key"
        android:value="<my-Key-here>" />
  • Также в файлы.XML добавляется фрагмент карты:
<?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>
  • И, наконец, вот код Kotlin, используемый для запуска карты:

    //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()
    }

1 ответ

Решение

Два возможных момента для проверки:

  • Ваш ключ API недействителен. Пожалуйста, проверьте свой ключ API, вызвав исходную конечную точку TomTom Maps: https://api.tomtom.com/map/1/tile/basic/main/0/0/0.png?key=%3Cyour_api_key%3E, и если вы не можете чтобы увидеть изображение фрагмента карты - зарегистрируйте свой новый ключ API, перейдя на портал разработчика TomTom и проверьте еще раз.

  • Ваш ключ API помещен в неправильное место в файле AndroidManifest.xml. Убедитесь, что он находится внутри<application> тег, рядом с <activity> тег.

Другие вопросы по тегам