我想根据标记的距离来缩放相机。如果Google地图中显示的所有标记都无法完全覆盖街道级别缩放(15),则切换到另一个内置缩放功能:CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding)
,满足要求。当标记彼此太靠近或者只有一个标记因为它放大到最大级别时,我不使用这个内置函数。我曾尝试使用GoogleMap#setMaxZoomPreference
但它似乎不起作用。缩放级别不一定禁止钳制某个最大值(设置最大缩放级别变为无效)但我需要设置初始缩放,用户可以看到整个地图中存在的所有标记。
如何以米为单位测量相机视口?
我将需要可视区域并收集标记的所有距离,以确定我是否将使用街道级别缩放级别或内置缩放功能。
答案 0 :(得分:1)
您可以测量每个摄像机上的视口宽度和高度,如下所示:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnCameraIdleListener {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(final GoogleMap googleMap) {
mMap = googleMap;
mMap.setOnCameraIdleListener(this);
}
@Override
public void onCameraIdle() {
VisibleRegion viewPort = mMap.getProjection().getVisibleRegion();
double viewPortHeight = SphericalUtil.computeDistanceBetween(viewPort.nearLeft, viewPort.farLeft);
double viewPortWidth = SphericalUtil.computeDistanceBetween(viewPort.nearLeft, viewPort.nearRight);
}
}
我使用Google Maps Android API Utility Library
中的SphericalUtil.computeDistanceBetween
方法