Googlemap иногда вылетает из приложения при использовании com.google. android .gms.maps.GoogleMap.MoveCamera - PullRequest
1 голос
/ 10 января 2020

У меня проблемы с библиотекой карт Google. Это странная проблема, о которой я слышал с 2013 года, но она все еще существует ...

Иногда, когда я загружаю карту, чтобы показать текущую позицию, приложение вылетает. Карта находится внутри фрагмента:

class MyFragment: Fragment(), OnMapReadyCallback, LocationListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{

Ошибка в этой функции:

private fun actualizarPosicionMapa(coordenadas: MisCoordenadas){
    try{
        val latLng = LatLng(coordenadas.coordenadasLatitud?.toDouble() ?: 0.0, coordenadas.coordenadasLongitud?.toDouble() ?: 0.0)
        val cameraPosition = CameraPosition.Builder().target(latLng).zoom(Constantes.General.zoomMap).build()
        val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
        if(cameraUpdate != null && mMap != null){
            //the error is triggered at the next line
            mMap.moveCamera(cameraUpdate)//this one line!
        }
    }
    catch (ex: Exception){
        Log.wtf("errorMapBOOM", ex.message)
        Toast.makeText(requireContext(), ex.localizedMessage, Toast.LENGTH_LONG).show()
    }
}

Ошибка Crashlitics:

Fatal Exception: java.lang.NullPointerException Attempt to get length
 of null array java.nio.ByteBufferAsShortBuffer.put
 (ByteBufferAsShortBuffer.java:121)
 com.google.maps.api.android.lib6.gmm6.vector.gl.buffer.d.d (d.java:71)
 com.google.maps.api.android.lib6.gmm6.vector.gl.buffer.d.a (d.java:52)
 com.google.maps.api.android.lib6.gmm6.vector.a.a (a.java:56)
 com.google.maps.api.android.lib6.gmm6.vector.bq.b (bq.java:47)
 com.google.maps.api.android.lib6.gmm6.vector.bq.a (bq.java:41)
 com.google.maps.api.android.lib6.gmm6.vector.cd.a (cd.java:365)
 com.google.maps.api.android.lib6.gmm6.vector.bf.run (bf.java:112)

Минимальный уровень API I для приложения было выбрано 19.

Последняя версия карты:

implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'

Манифест:

    <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="MY_MAPS_API_KEY_:)" />
...