Mam MapActivity. Jeśli jest ustawiona na odpowiednią lokalizację i poziom powiększenia, aby zobaczyć, że ruch nie jest pokazywany po pierwszym utworzeniu, dopóki nie wejdziesz w interakcję z mapą (kliknij na nią, przeciągnij, itp.), W którym punkt pojawi się ruch. Naturalnie chcę, aby ruch pojawiał się bez interakcji użytkownika po załadowaniu, ale nie byłem w stanie dowiedzieć się, jak go uruchomić. Jakieś pomysły?Android 1.6 Mapview nie wyświetla ruchu, dopóki użytkownik nie wejdzie w interakcje z mapą.
Z mojego MapActivity dziedziczonej klasy:
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);
}
A oto co jest w 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>
Zgodnie z Twoją sugestią podałem tę kolejną próbę. Umieściłem mapView.postInvalidateDelayed (5000); w OnStart() dla tego działania i obejrzał, jak trafia w tryb debugowania, a następnie siedział i czekał, aż ruch wyświetli się na dobre 30 sekund. Wydaje się, że nie ma żadnego efektu. – Brian
Właściwie masz rację. postInvalidate po opóźnieniu rzeczywiście działa, jeśli uruchomi się po całkowitym wyrenderowaniu mapy. Jeśli zostanie uruchomiony przed zakończeniem renderowania, nic się nie dzieje. smętne Test fix właśnie zrobił, która działa od onCreate od postInvalidateDelayed nie wydaje się, aby załatwić sprawę (bo odpaliłem go z wątku UI może?) I tak jakby brzydka to działa jeśli mapa renderuje w <1000ms: Timer timer = new Timer(); timer.schedule (nowa funkcja TimerTask() { @Override public void run() {mapView.postInvalidate();} }, 1000); – Brian