2011-01-28 13 views
0

Androidでマップキットベースのアプリケーションを実装しています。私はこのSDKにはとても新しいものでした。私の問題は、マップ領域が変更されたときにメソッドを起動する必要があることです。地域が変更されたときにメソッドを起動することが可能であることを皆さんに教えてください。地図上の地域地図の変更AndroidSdk

+0

あなたがマップ地域とはどういう意味ですか変更されましたか? – Reno

答えて

1

マップがパンまたはズームのメソッドを実行しても、このメソッドから情報を取得できないため、マップ領域が変更されるため、onDrawメソッドを使用できます。 これを実現するには、MapViewをサブクラス化してonDrawメソッドをオーバーライドする必要があります。

これを行うと、表示される領域を制限する4つの座標を得ることができます。投影クラスは各点の座標を取得します(左上[0,0]、右上[width-0]、左下[0、高さ]および右下[幅、高さ])。最初onDrawの例では

、:あなたはこの4つの座標を取得し、GeoPointは[4]ので、ここであなたが比較することができ、あなたは新しい4点の座標、GeoPoint [4]の端を取得onDrawのセカンドランで を初期化 地域。

これはあなたが以下のようなのMapViewのonCameraChangeイベントを使用することができます...ので、遅延機構が変化検出景気減速への参考になります

+0

これは、左上と右下(または右上と左下)の2つの座標で管理できます。 – NickT

0

高価な操作です:

final Fragment mapFragment = getFragmentManager().findFragmentById(R.id.map); 
mMap = ((MapFragment)mapFragment).getMap(); 
mMap.setOnCameraChangeListener(new OnCameraChangeListener() { 

    @Override 
    public void onCameraChange(CameraPosition position) { 
     Point point = new Point(mapFragment.getView().getWidth()/2 , mapFragment.getView().getHeight()/2); 
     LatLng l = mMap.getProjection().fromScreenLocation(point); 
     Log.v("asd","center lat: " + l.latitude + " center long: " + l.longitude + " "); 

    } 
});