当调用我的SupportMapFragment onCreateView()方法时,我读了地图
getProjection().getVisibleRegion().latLngBounds.northeast.x
和
getProjection().getVisibleRegion().latLngBounds.southwest.y
我第一次启动应用程序时(纵向模式),我得到 x = 720 和 y = 1230 。但是,在将方向更改为横向后,我再次看到相同的值。
回到纵向模式会产生 x = 1280 和 y = 670 (这是我对景观的期望),然后回到横向第一个数字。
投影总是一个方向改变背后。
知道什么是错的,以及如何解决它?
答案 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) );
}