根据设备更改地图开始缩放

时间:2018-05-05 13:59:43

标签: android google-maps

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

我不明白这对于更多人来说这不是一个问题吗?或者我真的很喜欢网络搜索?我无法在任何地方找到您根据查看地图的设备(以及屏幕尺寸)和方向更改起始缩放的位置?

代码示例:

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
}

Sceenshots

Nexus 9 Tablet Emulation

Nexus 6P Phone Emulation

好的,尝试更换

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

现在应用程序在&#34开始时崩溃;使用newLatLngBounds(LatLngBounds,int)时出错:地图大小不能为0."

1 个答案:

答案 0 :(得分:0)

解决方案

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
}