在Google地图上自动调整缩放尺寸? (取决于android屏幕分辨率)

时间:2010-04-19 11:21:50

标签: java android google-maps zoom

我已经获得了2个GeoPoints,用标记在地图上显示它们。

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

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

2 个答案:

答案 0 :(得分:9)

您可以使用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());

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

  

因为缩放只能实现   离散水平,因为   地图的宽高比可能不匹配   给出的比例,质量   适合可能不同。我们唯一的事情   保证是在缩放后,在   至少有一个新的纬度或   新的经度将是一个因素   来自相应参数的2。

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

答案 1 :(得分:0)

这是应该做的:

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);
        }
    });

}

参考:moveCamera with CameraUpdateFactory.newLatLngBounds crashes

还有另一种简单的方法,您可以使用此项目完成所有与地图相关的活动:

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