首页 > 解决方案 > 根据设备更改地图开始缩放

问题描述

我有一个带有阴影多边形区域和一些标记的谷歌地图。我设置了起始缩放以在我正在测试的平板电脑仿真上很好地构图阴影区域。当我在不同的模拟器(例如手机)上测试时,缩放太近导致阴影区域填满屏幕。

我不明白这对更多人来说不是问题吗?还是我真的不擅长互联网搜索?我在任何地方都找不到如何根据您正在查看地图的设备(以及屏幕尺寸)和方向来更改起始缩放?

代码示例:

public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    float zoom = 15.8f;  // Need to change based on device screen size/orientation
    mMap.moveCamera(CameraUpdateFactory
       .newLatLngZoom(new LatLng(-35.237, 149.082976), zoom)));

    // other code
}

截图

Nexus 9 平板电脑模拟

Nexus 6P 电话仿真

好的,尝试更换

mMap.moveCamera(CameraUpdateFactory
       .newLatLngZoom(new LatLng(-35.237, 149.082976), zoom)));

LatLngBounds boundry = new LatLngBounds(new LatLng(-35.243, 149.074), 
    new LatLng(-35.231, 149.094));
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(boundry,0));

现在应用程序在开始时崩溃,并显示“使用 newLatLngBounds(LatLngBounds, int) 时出错:地图大小不能为 0。”

标签: androidgoogle-maps

解决方案


解决方案

public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    LatLng sw = new LatLng(-35.243, 149.074);
    LatLng ne = new LatLng(-35.231, 149.094);

    mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
        @Override
        public void onMapLoaded() {
            LatLngBounds boundary = new LatLngBounds(sw, ne);
            mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(boundary,90));
        }
    });

    // other code
}

推荐阅读