Mapview getLatitudeSpan y getLongitudeSpan no funciona

A veces, cuando intento obtener el lapso Latitude o Longitude de un mapview con getLatitudeSpan () y getLongitudeSpan () obtengo 0 y 360 * 1E6 respectivamente. Esto no sucede siempre, pero es un problema, ¿alguien tiene este problema? ¿Alguna solución? Intenté usar getProjection () también pero consigo el mismo problema. Aquí está el pedazo de código:

MapView mapView = (MapView) findViewById(R.id.mapview); int lat = mapView.getLatitudeSpan(); // sometimes returns 0 int long = mapView.getLongitudeSpan(); // sometimes returns 360*1E6 

Detectaría la condición y programaría su trabajo para intentar otra vez después de algunos cientos milisegundos. AFAIK, esos valores eventualmente estarán disponibles, pero pueden ser bastante temporales-dependientes. En teoría, deberían calcularse después de haber configurado el centro y haber configurado el zoom, pero sospecho que en realidad no se calculan hasta que se MapView y posiblemente no hasta que se descarguen algunos datos de mapas de Internet.

Por lo tanto, aísle el código que depende de esos intervalos en un método. Llame a ese método de onCreate() y el AsyncTask , probablemente como lo está haciendo hoy. Pero, agregue la lógica de detección para encontrar los valores inválidos, y luego llame a postDelayed() en su MapView (u otra View ) para invocar su método de nuevo después de unos cientos de milisegundos si los valores no son válidos. También puede ser necesario agregar algún tipo de contador para que no haga esto postDelayed() cosas indefinidamente.

Esto, por supuesto, es un hack. Pero, con el componente de Google Maps que no es de código abierto, es difícil encontrar algo más sólido.

He pasado por este mismo problema y las soluciones mencionadas anteriormente funciona. Sin embargo, me gustaría presentar una implementación más clara para todos los principiantes por ahí.

Defina una variable de vista para su mapa: private MapView mapView;

Y asigne el mapa:

 mapView = (MapView) findViewById(R.id.mapview); 

Agregue el siguiente método:

  /** * Wait for mapview to become ready. */ private Runnable waitForMapTimeTask = new Runnable() { public void run() { // If either is true we must wait. if(mapView.getLatitudeSpan() == 0 || mapView.getLongitudeSpan() == 360000000) mapView.postDelayed(this, TIME_TO_WAIT_IN_MS); } }; 

En su onCreate / onResume, agregue lo siguiente antes de llamar a getLatitudeSpan:

 mapView.postDelayed(waitForMapTimeTask, TIME_TO_WAIT_IN_MS); 

Y eres bueno para ir 🙂

He estado jugando con esto … y tener un mapview en una actividad tabulada … los valores no se inicializan hasta que onResume () … Lo verifiqué poniendo:

  final Handler mHandler = new Handler(); mHandler.postDelayed(new Runnable() { @Override public void run() { latSpan = mapView.getLatitudeSpan(); lngSpan = mapView.getLongitudeSpan(); if ((latSpan == 0) && (lngSpan == 360000000)) { count++; System.out.println("here we go again! " + count); mHandler.postDelayed(this, 100); } } }, 100); 

En varios lugares … en onCreate () y onStart () irá indefinidamente (hasta que cambie a esa pestaña), en onResume () obtiene los valores correctos inmediatamente.

GetLatitudeSpan y getLongitudeSpan sólo funcionan para darle los tramos para la parte visible del mapa. Así que si los llama en onCreate (), el mapa no siempre se ha visualizado todavía. Llámalos en onStart () en su lugar y deberías estar bien.

  • Obtenga los puntos de latitud y longitud cada 10 metros, entre las dos ubicaciones diferentes en android
  • Distancia de viaje entre dos Lat y Long
  • ¿Cómo obtener la latitud y longitud actuales sin utilizar el método getLastKnownLocation en Android?
  • ¿Cómo obtener la latitud y la longitud actuales en la aplicación de Android?
  • Calcular la distancia entre dos ubicaciones geográficas
  • Compruebe si una ubicación GPS está dentro de un cierto radio de otra ubicación GPS en android
  • Longitud y latitud del GPS de la foto geotiquetada
  • Cómo obtener la información de latitud y longitud de la imagen
  • Compruebe si la latitud y la longitud están dentro de un círculo
  • ¿Cómo encontrar si un punto GPS se encuentra en un conjunto determinado de inicio y fin ubicación GPS?
  • Cómo ordenar puntos geográficos según la distancia desde la ubicación actual en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.