android - 如何以米为单位测量 Google map 的相机视口(viewport)?

标签 android google-maps

规范:

我想根据标记的距离缩放相机。如果 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/

相关文章:

javascript - Streetview Api,锁定间距(垂直平移)

css - jQuery Mobile 中的谷歌地图

java - Android - 按钮计时器(处理程序 - RemoveCallback 不会停止 PostDelayed)

java - Android插入日期到数据库datePicker报错

android - 如何在 vuforia 中识别像建筑物这样的大型物体

google-maps - Google Maps Flutter setMapStyle 未生效 - 城市名称仍在显示

google-maps - Google Map Engine Lite 的 Json 数据

javascript - 在谷歌地图 Angular 查找距离

android - 嵌入式 youtube 视频无法在某些 Android 设备上播放

Android Studio 不为我的导入项目生成 R.java