修复Google-Map中两个Marker之间的缩放级别

时间:2015-08-17 06:35:07

标签: android google-maps google-maps-api-2

目前我使用 Google-Map-v2 ,我想在两个 Markers 之间显示方向。一切都很好,两个 Markers 之间的方向计算并绘制得很好。但是只剩下一个问题。

问题是Google-Map中这两个标记之间的缩放级别太多了。我在SO中搜索并找到一个解决方案,通过以下代码更改缩放级别:

 LatLngBounds.Builder builder = new LatLngBounds.Builder();
    builder.include(origin);
    builder.include(dest);
    LatLngBounds bounds = builder.build();

    CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 50);
    mMap.animateCamera(cu);

现在它更好但仍然缩放级别不好。是否可以对代码进行一些修复? (如果我可以修复一些填充视图)

我也改变50到6,12,......但没有改变。

2 个答案:

答案 0 :(得分:16)

你正在使用正确的代码,如果你想要缩小(外部)或减少到0,如果你想要在包含两个标记的最小区域(你可以),则需要增加值(50)跳过案例中的值。

如果您设置的值为150或更高,并且级别太高,您可以使用动画回调缩小" latlng"变焦:

https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#animateCamera(com.google.android.gms.maps.CameraUpdate,com.google.android.gms.maps.GoogleMap.CancelableCallback)

LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(origin);
builder.include(dest);
LatLngBounds bounds = builder.build();

CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 50);
mMap.animateCamera(cu, new GoogleMap.CancelableCallback(){
    void onCancel(){}
    void onFinish(){
        CameraUpdate zout = CameraUpdateFactory.zoomBy(-3.0);
        mMap.animateCamera(zout);
    }
});

这应该缩放到latLng,完成后,缩放3级。

答案 1 :(得分:3)

试试这个:

 CameraPosition cameraPosition =
                                    new CameraPosition.Builder()
                                            .target(yourlatlng)
                                           // .bearing(targetBearing)// you can ignore it
                                            .zoom(12)// your zoom value
                                                    // .tilt(40)  // angle of view
                                            .build();


                            mMap.animateCamera(
                                    CameraUpdateFactory.newCameraPosition(cameraPosition),
                                    500,
                                    null);