如何使用setBuiltInZoomControls(true)布局缩放控件?

时间:2009-11-20 03:13:28

标签: android android-mapview

想要为地图添加缩放控件。我还想布局缩放控件的位置而不是默认的中间底部位置。我可以通过getZoomControl执行此操作,但不推荐使用它。

有人可以告诉我如何使用setBuildtInZoomControls吗?

6 个答案:

答案 0 :(得分:9)

答案 1 :(得分: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。

答案 2 :(得分: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));

答案 3 :(得分:0)

我很确定这样做的唯一方法是使用MapView弃用getZoomControls()或DIY。 MapController有必要的方法(例如zoomIn()zoomOut())。

答案 4 :(得分:0)

答案 5 :(得分:0)

GeorgePlacing Zoom Controls in a MapView上提供的解决方案允许使用重力属性布局内置缩放控件。此属性将元素定位到其容器中,该容器似乎位于屏幕的底部,因此无法通过布局缩放控件将缩放控件定位在屏幕顶部。

总之,您可以通过执行以下操作来布局内置缩放控件:

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

请注意,缩放控件包含在FrameLayout中,因此任何尝试使用RelativeLayout.ALIGN_PARENT_BOTTOMRelativeLayout.ALIGN_PARENT_TOP等规则的行为都会让您感到痛苦和悲伤。