定位更改后GoogleMap(Android)投影可见区域未更新?

时间:2014-07-02 23:51:14

标签: android google-maps orientation supportmapfragment mapfragment

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

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

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

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

回到纵向模式会产生 x = 1280 y = 670 (这是我对景观的期望),然后回到横向第一个数字。

投影总是一个方向改变背后。

知道什么是错的,以及如何解决它?

1 个答案:

答案 0 :(得分: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) );
}