5

MapActivity があります。トラフィックを表示するために適切な場所とズーム レベルに設定されている場合、最初に作成された後、マップを操作 (クリック、ドラッグなど) してトラフィックが表示されるまで、何も表示されません。当然、ロード後にユーザーの操作なしでトラフィックが表示されるようにしたいのですが、それをトリガーする方法がわかりません。何か案は?

私の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);
}

そして、これが 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>
4

3 に答える 3

3

postInvalidate() は、適切な遅延の後に回避策として行う必要がありますが、どのような遅延時間を試しましたか?

于 2010-07-02T19:26:09.617 に答える
0

私はこれに関するバグレポートを提出しました、番号10317。私の調査によると、MapViewで交通モードまたはストリートビューモードのいずれかをオンにすると、スレッドが起動してGoogleサーバーからデータを取得します。MapViewがそれ自体を描画するまでにデータが戻らない場合、適切な線は表示されません。ユーザーの操作により再描画が発生し、それまでにデータは通常存在します。コード(つまり、モードをオンに設定したコード)の実行が終了するまでスレッドが開始されないため、invalidateの呼び出しは機能しません。回避策は、将来のメッセージを投稿してMapViewを無効にし、(うまくいけば)データが存在するときに再描画を行うことです。修正は、データフェッチを実行するスレッドが、データの取得時に再描画を引き起こすようにすることです。

于 2010-11-01T02:52:05.367 に答える
0

を探してみましたが、XML attrs見つかりMapViewませんでした。

私の推測では、使用後にマップが再描画されないということですsetTraffic(true);

電話してみるmapView.invalidate();

于 2010-06-27T05:23:11.220 に答える