2013-07-12 6 views
7

マップをできるだけ拡大して、同時にすべてのマーカーを画面上に維持する方法はありますか? 私は6つのマーカーが一様でない形になっています。私はちょうど彼らの中心を取ってそれにマップを配置することを考えていましたが、それでも私はマップをどのようにプログラムでズームインできるか分かりません。Android GoogleマップAPI V2センターマーカー

これらのマーカーは、マップが作成されるたびに位置が変更されます。理想的には、私はすべてのビューに含まれているように地図をズームするスクリプトを持っています。

あなたは分かります。次の行をループでjsonからマーカーを1つずつ作成しています。

mMap.addMarker(new MarkerOptions().position(new LatLng(lat,lng)).title(c.getString("title"))); 

答えて

23

CameraUpdateクラスを使用して、すべてのプログラムによる地図の移動を(おそらく)行う必要があります。これを行うには

、最初のでようなすべてのマーカーの境界を計算する:

LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
for each (Marker m : markers) { 
    builder.include(m.getPosition()); 
} 

LatLngBounds bounds = builder.build(); 

そして工場を使用して移動記述オブジェクトを取得:CameraUpdateFactory:

int padding = 0; // offset from edges of the map in pixels 
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding); 

最後に地図を移動させます:

googleMap.moveCamera(cu); 

アニメーションが必要な場合:

googleMap.animateCamera(cu); 

*別のポストからのガット:Android map v2 zoom to show all the markers

+1

あなたはいくつかのより多くのコンテキスト用からこれを取得した最初の投稿にリンクしてくださいでした。 – Somk

+0

これはすべてのことです。それはどこにでもあります。 http://stackoverflow.com/a/14828739/1837759 –

+0

ありがとうございます。この行はforeach(Marker m:マーカー)でも私に混乱を引き起こしています{ マーカーを取得するにはどうすればよいですか? – Somk