想在地图上添加缩放控件。我还想布局缩放控件的位置,而不是默认的中间底部位置。我可以通过 getZoomControl 做到这一点,但它已被弃用。
谁能告诉我如何做到这一点setBuildtInZoomControls
?
想在地图上添加缩放控件。我还想布局缩放控件的位置,而不是默认的中间底部位置。我可以通过 getZoomControl 做到这一点,但它已被弃用。
谁能告诉我如何做到这一点setBuildtInZoomControls
?
这就是我最终让我工作的方式(通过在 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();
}
});
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));
mapView.getZoomButtonsController()
尽管这是无证的(至少在此处提供的 javadoc 中:com.google.android.maps)我很确定这是已弃用的替代品getZoomControls
编辑:刚刚发现它已记录在案,只是不在google api docs中,而是在此处: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。
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()或自己动手做。MapController具有必要的方法(例如zoomIn()和zoomOut())。
George提供的在 MapView 中放置缩放控件的解决方案允许通过使用重力属性来布局内置的缩放控件。此属性将元素定位到其容器中,该容器似乎位于屏幕底部,因此无法通过布局缩放控件将缩放控件定位在屏幕顶部。
总之,您可以通过执行以下操作来布局内置缩放控件:
((FrameLayout.LayoutParams) mapView.getZoomButtonsController().getZoomControls().getLayoutParams()).gravity = Gravity.RIGHT;
请记住,缩放控件包含在一个FrameLayout
因此任何尝试使用规则之类的RelativeLayout.ALIGN_PARENT_BOTTOM
或RelativeLayout.ALIGN_PARENT_TOP
只会导致您痛苦和悲伤的过程中。