【问题标题】:GoogleMap (Android) projection visible region not updated after orientation change?GoogleMap(Android)投影可见区域在方向更改后未更新?
【发布时间】:2014-07-02 23:51:14
【问题描述】:

当调用我的 SupportMapFragment onCreateView() 方法时,我会读取地图的

getProjection().getVisibleRegion().latLngBounds.northeast.x

getProjection().getVisibleRegion().latLngBounds.southwest.y

第一次启动应用程序(纵向模式)时,我得到 x=720y=1230。但是,将方向更改为横向后,我再次看到相同的值。

回到纵向模式会产生 x=1280y=670(这是我对横向模式的期望),回到横向模式会得到第一个再次编号。

就像投影总是落后一个方向变化。

知道出了什么问题,以及如何解决吗?

【问题讨论】:

    标签: android google-maps orientation supportmapfragment mapfragment


    【解决方案1】:

    这里的问题是onConfigurationChanged(我假设您在此处检查 x 和 y 值)在 GoogleMap 可以更新其投影之前被调用。

    我发现的一种方法是触发 0% 的虚拟缩放,一旦完成(使用更新的投影)将调用 onCameraIdle


    添加 OnCameraIdleListener:

    // add this to your imports
    import com.google.android.gms.maps.GoogleMap.OnCameraIdleListener
    
    // add this to your map-using activity
    class MapsActivity implements ..., OnCameraIdleListener { ... }
    

    然后,在您的地图使用活动中:

    @Override
    public void onCameraIdle() {
        // ... do something with getProjection() ...
    }
    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    
        // dummy zoom to trigger onCameraIdle with *correct* orientation
        mMap.animateCamera( CameraUpdateFactory.zoomBy(0f) );
    }
    

    【讨论】:

    • 我正在使用 Kotlin 并手动将其翻译成 Java,如果它不起作用,请随时修复它 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多