2012-08-30 9 views

答えて

2

onDrawドキュメントは、あなたがのMapViewを拡張し、onDrawが終了すると、進行状況インジケータを非表示にしようとすることができ

「我々は、マップの背景(必要に応じてロードタイルを)描く」

言います。しかし、私の推測では、MapTilesが非同期にロードされるため、MapTilesがすべてロードされる前にプログレスバーが終了することになります。

+0

ねえ、更新されたソリューションがありますか? thx –

+0

申し訳ありませんが、数年前からAndroidデベロッパーをしていません。 –

0

現在のMapView実装でこれを行うための直接APIはありません。 MapViewのため

4

OnCameraChangeListenerOnMapLoadedCallbackを使用すると、この現象をシミュレートできます。 GoogleMap.OnCameraChangeListenerthe documentationから

パブリック抽象無効onCameraChange(CameraPositionの位置)カメラの位置が変更された後に呼び出され

。アニメーション中に、 このリスナーには、中間のカメラ位置が通知されないことがあります。アニメーションの最終位置は常に です。

これはメインスレッドで呼び出されます。 GoogleMap.OnMapLoadedCallbackthe documentationから

:onMapLoaded

パブリック抽象無効()マップは、レンダリングが終了したときに呼び出され

。これは、一度だけ と呼ばれます。 に再度通知する場合は、別のコールバックを要求する必要があります。戦略は1 GoogleMap.OnMapLoadedCallbackonCameraChangeが呼び出されるたびに要求するかもしれないので、そこに述べたように

onMapLoaded()は一度だけ呼び出されます。ここで

は答え説明するために(非常に単純な)例です。

public class MapsActivity extends FragmentActivity implements OnCameraChangeListener, OnMapLoadedCallback { 
    private GoogleMap googleMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 

     SupportMapFragment mapFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); 
     googleMap = mapFragment.getMap(); 

     googleMap.setOnCameraChangeListener(this); 
    } 

    @Override 
    public void onMapLoaded() { 
     //TODO: Hide your progress indicator 
    } 

    @Override 
    public void onCameraChange(final CameraPosition cameraPosition) { 
     googleMap.setOnMapLoadedCallback(this); 

     //TODO: Show your progress indicator 
    } 
} 
+0

私が探していたことは間違いありません。 'onMapLoaded()'が呼び出されるのに時間がかかりすぎるようですが、地図がすべての場所などを読み込むためです。間違いなく適切なAPIです。ありがとうございました!受け入れられた答えIMHOでなければなりません。 –

関連する問題