Android地图库V2缩放控制自定义位置

如何自定义GoogleMap V2中的内置缩放控件的位置?

Google地图库的第1版有许多与此主题相关的问题。

将缩放控件放置在MapView中

如何在MapView中重新定位内置缩放控件?

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

但是,我无法find有关图书馆V2的任何问题。

在V2中,没有办法

(LinearLayout) mapView.getZoomControls(); 

所有前面提到的问题都变得过时了。

提前致谢

Solutions Collecting From Web of "Android地图库V2缩放控制自定义位置"

根据您要做的事情,您可能会发现GoogleMap.setPadding()有用(2013年9月添加)。

 map.setPadding(leftPadding, topPadding, rightPadding, bottomPadding); 

从API文档:

此方法允许您在地图上定义可见区域,通过在地图的四个边缘的每一个上设置填充,可以向地图发出信号,以指示边缘周围的地图部分可能被遮挡。 地图function将适应填充。 例如,缩放控件,指南针,版权声明和Google徽标将移动到适合定义区域的内部,相机移动将相对于可见区域的中心等。

另请参阅填充在GoogleMap中的工作原理 。

是的,你可以用小黑客来改变ZoomControlMyLocationbutton的位置。 在我的示例中,我有SupportMapFragment ,这是从xml布局夸大。

查看ZoomControl和MyLocationbutton的ID:

 ZoomControl id = 0x1 MyLocation button id = 0x2 

更新ZoomControl位置的代码:

 // Find map fragment SupportMapFragment mapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map); // Find ZoomControl view View zoomControls = mapFragment.getView().findViewById(0x1); if (zoomControls != null && zoomControls.getLayoutParams() instanceof RelativeLayout.LayoutParams) { // ZoomControl is inside of RelativeLayout RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) zoomControls.getLayoutParams(); // Align it to - parent top|left params.addRule(RelativeLayout.ALIGN_PARENT_TOP); params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); // Update margins, set to 10dp final int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, getResources().getDisplayMetrics()); params.setMargins(margin, margin, margin, margin); } 

AFAIK,没有办法移动标准的缩放控件。 但是,您可以隐藏它们,并随心所欲地使用自己的缩放button,不过您将负责根据这些button单击来调整地图的缩放比例。

只是为了logging:

导航控件是0x4

所以总的来说:

 @LayoutRes final int ZOOM_CONTROL_ID = 0x1; @LayoutRes final int MY_LOCATION_CONTROL_ID = 0x2; @LayoutRes final int NAVIGATION_CONTROL_ID = 0x4;