6

マップにズーム コントロールを追加したいと考えています。また、デフォルトの中央下の位置ではなく、ズーム コントロールの位置をレイアウトしたいと考えています。getZoomControl でこれを行うことができますが、非推奨です。

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

4

6 に答える 6

9

これが、最終的に機能するようになった方法です(ZoomControlをXMLレイアウトに埋め込むことにより)。

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();
        }
});

参照: MapView で常にズーム コントロールを表示する

于 2010-07-25T09:12:53.277 に答える
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));
于 2012-09-04T17:49:41.840 に答える
1
mapView.getZoomButtonsController()

これは文書化されていませんが(少なくともここで利用可能なjavadoc:com.google.android.maps)、これは非推奨の代替品であると確信しています。getZoomControls

編集:それ文書化されていることがわかりました。GoogleAPIドキュメントではなく、ここにあります:developer.android.comのZoomButtonsController

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の場合もあります。

于 2010-07-13T12:30:31.487 に答える
0

これを行う唯一の方法は、MapViewの非推奨のgetZoomControls()を使用するか、DIY することだと確信しています。MapControllerには必要なメソッドがあります (例: zoomIn()およびzoomOut() )。

于 2009-11-20T17:18:05.573 に答える
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);

私はこれがうまくいくと思います...これが役に立つことを願っています:)

于 2010-07-26T17:03:15.637 に答える
0

ジョージMapView にズーム コントロールを配置する際に提供したソリューションでは、重力属性を使用して組み込みのズーム コントロールをレイアウトできます。この属性は、画面の下部に配置されているように見えるコンテナーに要素を配置するため、ズーム コントロールをレイアウトして画面の上部にズーム コントロールを配置することはできません。

結論として、次のようにして、組み込みのズーム コントロールをレイアウトできます。

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

ズーム コントロールは に含まれているため、またはFrameLayoutのようなルールを使用しようとすると、痛みと悲しみだけが生じることに注意してください。RelativeLayout.ALIGN_PARENT_BOTTOMRelativeLayout.ALIGN_PARENT_TOP

于 2012-12-12T15:55:37.617 に答える