在java中的谷歌地图自动缩放? (取决于android屏幕分辨率)

我有两个GeoPoints给与他们在地图上用标记。

如何获得MapController的最佳缩放级别,以聚焦两个点的中间位置,还可以将它们放在地图上。

整个事情应该在不同的屏幕分辨率下工作。

Solutions Collecting From Web of "在java中的谷歌地图自动缩放? (取决于android屏幕分辨率)"

您可以使用MapView的MapController执行此操作。 您使用MapView.getController()获取MapController,然后您可以尝试使用MapController.zoomToSpan()设置正确的缩放比例。 我也倾向于使用ItemizedOverlay的getLatSpanE6()和getLonSpanE6()使这个更简单。 一个例子:

MapView map = (MapView) findViewById(R.id.Map); MapController mc = map.getController(); mc.zoomToSpan(overlay.getLatSpanE6(), overlay.getLonSpanE6()); 

注意他们的警告是很重要的:

由于缩放只能实现离散的层次,并且由于地图的高宽比可能与给定的比例不匹配,所以拟合的质量可能会有所不同。 我们唯一保证的是,在缩放之后,新纬度或新经度中的至less一个将在相应参数的2倍的范围内。

编辑:为了也得到地图放大正确的地方,你必须使用MapController.setCenter()。

这是应该如何做的:

 private void loadMarkerPositions() { for (Stores store : storeList) { latlong1 = new LatLng(store.getLatitude(), store.getLongtitude()); array.add(latlong1); } List<LatLng> points = array; final LatLngBounds.Builder bc = new LatLngBounds.Builder(); for (LatLng item : points) { bc.include(item); } googleMap.setOnCameraChangeListener(new OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition arg0) { // Move camera. googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bc.build(), 30)); // Remove listener to prevent position reset on camera move. googleMap.setOnCameraChangeListener(null); } }); } 

参考: 使用CameraUpdateFactory.newLatLngBounds崩溃的moveCamera

还有一种简单的方法,你可以使用这个项目来完成所有的地图相关的活动:

https://github.com/girishnair12345/Google-Maps-V2-library