2009-11-20 8 views
6

は地図にズームコントロールを追加したいと考えています。また、デフォルトの中央下部位置の代わりにズームコントロールの位置をレイアウトする必要があります。私はgetZoomControlでこれを行うことができますが、非推奨です。setBuiltInZoomControlsによるズームコントロールのレイアウト方法(true)?

setBuildtInZoomControlsでこれを行う方法を教えてもらえますか?

答えて

1
mapView.getZoomButtonsController() 

これは(少なくともここにありjavadocの:com.google.android.maps)文書化されていませんが、私は、これは非推奨getZoomControls

編集のための代替であるかなり確信している:ちょうどそれが文書であることが判明、ちょうどGoogleのAPIドキュメントではなく、ここではない:ZoomButtonsController on developer.android.com

あなたはその後、ズームコントロールのビューへのアクセスを取得するには(あなたが何をしたいかに応じて)getContainer()またはgetZoomControls()を呼び出すことができます。

そしてが

RelativeLayout.LayoutParams zoomParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
zoomParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
mapView.getZoomButtonsController().getZoomControls().setLayoutParams(zoomParams); 

私はマップが使用法を表示するには、レイアウトどのようなことを確認していないことを認めざるを得ないが、

ような何かを、同様のLinearLayoutである可能性があります。

+0

'RelativeLayout.LayoutParams'は、クラスキャスト例外をスローします。 FrameLayout.LayoutParamsは必要なものですが、これを動作させる方法がわかりません。 –

9

これは私が最終的に(XMLレイアウトにZoomControlを埋め込むことによって)私の仕事を得ている方法です。

mapView = (MapView) this.findViewById(R.id.mapView); 

ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols); 
zoomControls.setOnZoomInClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      mapView.getController().zoomIn(); 
     } 
}); 
zoomControls.setOnZoomOutClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      mapView.getController().zoomOut(); 
     } 
}); 

参照:Always show zoom controls on a MapView

0
RelativeLayout relativeLayout = new RelativeLayout(this); 
setContentView(relativeLayout); 

final MapView mapView = new MapView(this, DEBUG_MAP_API_KEY); 
RelativeLayout.LayoutParams mapViewLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.FILL_PARENT); 
relativeLayout.addView(mapView, mapViewLayoutParams); 

RelativeLayout.LayoutParams zoomControlsLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 
zoomControlsLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
zoomControlsLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL); 

relativeLayout.addView(mapView.getZoomControls(), zoomControlsLayoutParams); 

mapView.setClickable(true); 
mapView.setEnabled(true); 

私は、これは動作するはずだと思う...が、これは便利ですホープ:)

+0

これは、MapViewの廃止予定のgetZoomControls関数も使用しています。 – Janusz

1
LinearLayout zoomLayout = (LinearLayout) findViewById(R.id.layout_zoom); 
View mapController = mapView.getZoomButtonsController().getZoomControls(); 
zoomLayout.addView(mapController, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
0

Placing Zoom Controls in a MapViewGeorgeが提供するソリューションが構築をレイアウトすることができます重力属性を使用してズームコントロールで使用します。この属性は、画面の下部に配置されているように見えるコンテナに要素を配置します。そのため、ズームコントロールを配置することによって画面上部にズームコントロールを配置することはできません。あなたが実行してズームコントロールに建てられたレイアウトすることができます結論として

((FrameLayout.LayoutParams) mapView.getZoomButtonsController().getZoomControls().getLayoutParams()).gravity = Gravity.RIGHT; 

ズームコントロールは、したがって、FrameLayoutいずれかに含まれていることを覚えておいてくださいRelativeLayout.ALIGN_PARENT_BOTTOMまたはRelativeLayout.ALIGN_PARENT_TOPのようなルールを使用しようとするだけで、痛みにあなたを導きますそして悲しみ。

関連する問題