は地図にズームコントロールを追加したいと考えています。また、デフォルトの中央下部位置の代わりにズームコントロールの位置をレイアウトする必要があります。私はgetZoomControlでこれを行うことができますが、非推奨です。setBuiltInZoomControlsによるズームコントロールのレイアウト方法(true)?
setBuildtInZoomControls
でこれを行う方法を教えてもらえますか?
は地図にズームコントロールを追加したいと考えています。また、デフォルトの中央下部位置の代わりにズームコントロールの位置をレイアウトする必要があります。私はgetZoomControlでこれを行うことができますが、非推奨です。setBuiltInZoomControlsによるズームコントロールのレイアウト方法(true)?
setBuildtInZoomControls
でこれを行う方法を教えてもらえますか?
これを行う唯一の方法は、MapViewの非推奨のgetZoomControls()を使用するか、DIYすることです。 MapControllerには必要な方法があります(例:zoomIn()およびzoomOut())。
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である可能性があります。これは私が最終的に(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();
}
});
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);
私は、これは動作するはずだと思う...が、これは便利ですホープ:)
これは、MapViewの廃止予定のgetZoomControls関数も使用しています。 – Janusz
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));
Placing Zoom Controls in a MapViewにGeorgeが提供するソリューションが構築をレイアウトすることができます重力属性を使用してズームコントロールで使用します。この属性は、画面の下部に配置されているように見えるコンテナに要素を配置します。そのため、ズームコントロールを配置することによって画面上部にズームコントロールを配置することはできません。あなたが実行してズームコントロールに建てられたレイアウトすることができます結論として
:
((FrameLayout.LayoutParams) mapView.getZoomButtonsController().getZoomControls().getLayoutParams()).gravity = Gravity.RIGHT;
ズームコントロールは、したがって、FrameLayout
いずれかに含まれていることを覚えておいてくださいRelativeLayout.ALIGN_PARENT_BOTTOM
またはRelativeLayout.ALIGN_PARENT_TOP
のようなルールを使用しようとするだけで、痛みにあなたを導きますそして悲しみ。
'RelativeLayout.LayoutParams'は、クラスキャスト例外をスローします。 FrameLayout.LayoutParamsは必要なものですが、これを動作させる方法がわかりません。 –