规范:
我想根据标记的距离缩放相机。如果 Google map 中存在的所有标记不能在街道级别 zoom(15) 上完全覆盖,则切换到另一个内置缩放功能:CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding)
,满足要求。当标记彼此太靠近或只有一个标记时,我不会使用此内置函数,因为它会放大到最大级别。我尝试使用 GoogleMap#setMaxZoomPreference
但它似乎不起作用。缩放级别不一定禁止限制在某个最大值(设置最大缩放级别无效)但我需要设置初始缩放,用户可以看到整个 map 中存在的所有标记。
问题:
如何以米为单位测量相机视口(viewport)?
想法:
我将需要可视区域并收集标记的所有距离,以确定我是使用街道级别缩放级别还是内置缩放功能。
最佳答案
您可以像这样测量每次相机变化时的视口(viewport)宽度和高度:
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
方法
关于android - 如何以米为单位测量 Google map 的相机视口(viewport)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43630137/