Tengo una MapActivity. Si se establece en una ubicación y nivel de zoom apropiados para ver el tráfico, ninguno se muestra después de que se creó por primera vez hasta que interactúas con el mapa (haz clic en él, arrastra, etc.), en cuyo punto se muestra el tráfico. Naturalmente, quiero que el tráfico se muestre sin ninguna interacción del usuario después de que se cargue, pero no he podido averiguar cómo activarlo. ¿Algunas ideas?Android 1.6 Mapview no muestra el tráfico hasta que el usuario interactúe con el mapa
Desde mi clase heredada MapActivity:
private MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.setTraffic(true);
}
Y aquí es cuál está en R.layout.map
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="...MY API KEY HERE..."
/>
</RelativeLayout>
En su sugerencia, le di otra oportunidad. Coloqué mapView.postInvalidateDelayed (5000); en OnStart() para esta actividad y lo vio golpearse en modo de depuración y luego se sentó y esperó a que apareciera el tráfico durante unos buenos 30 segundos. No pareció tener ningún efecto. – Brian
En realidad, estás en lo cierto. postInvalidar después de un retraso sí funciona si se inicia después de que el mapa esté completamente renderizado. Si se dispara antes de que se complete la primera renderización, no pasa nada. Una revisión cheezy que acabo de hacer que funciona desde onCreate ya que postInvalidateDelayed no parece funcionar (¿porque lo disparé del subproceso ui?) De todos modos aunque feo esto funciona si el mapa representa en <1000ms: Temporizador de temporizador = nuevo temporizador(); timer.schedule (new TimerTask() { @Override public void run() {mapView.postInvalidate();} }, 1000); – Brian