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

Fix zoom level between two Marker in Google-Map

目前我使用 Google-Map-v2,我想显示两个 标记 之间的方向。一切正常,两个标记之间的方向计算和绘制fine.But只剩下一个问题。

问题是 Google 中这两个标记之间的缩放级别太大了。我在 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,... 但是什么都没变

试试这个:

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

您使用的代码正确,如果您想缩小(向外),则需要增加值 (50);如果您希望位于包含两个标记 (你可以跳过这个值以防万一)。

如果您将值设置为 150 或更大,并且级别太多,您可以在 LatLng 缩放后使用动画回调来缩小:

Google API 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 级。