想要为地图添加缩放控件。我还想布局缩放控件的位置而不是默认的中间底部位置。我可以通过getZoomControl执行此操作,但不推荐使用它。
有人可以告诉我如何使用setBuildtInZoomControls
吗?
答案 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)
George在Placing Zoom Controls in a MapView上提供的解决方案允许使用重力属性布局内置缩放控件。此属性将元素定位到其容器中,该容器似乎位于屏幕的底部,因此无法通过布局缩放控件将缩放控件定位在屏幕顶部。
总之,您可以通过执行以下操作来布局内置缩放控件:
((FrameLayout.LayoutParams) mapView.getZoomButtonsController().getZoomControls().getLayoutParams()).gravity = Gravity.RIGHT;
请注意,缩放控件包含在FrameLayout
中,因此任何尝试使用RelativeLayout.ALIGN_PARENT_BOTTOM
或RelativeLayout.ALIGN_PARENT_TOP
等规则的行为都会让您感到痛苦和悲伤。