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

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

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

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

  • Google地图精确度问题
  • 在Android中使用Google地图在触摸的位置添加标记
  • 自定义infowindow在谷歌地图android v2
  • 隐藏在透明操作栏后面的MyLocationbutton,如何重新定位?
  • 适用于Android应用的Google Places API密钥
  • 添加button来映射infowindow android
  • 在Waze或Google Maps for mobile中检测导航的结束
  • 将自定义属性添加到标记(Google Map Android API V2)
  • 您可以使用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