[当我的SupportMapFragment onCreateView()方法被调用时,我阅读了地图的
getProjection().getVisibleRegion().latLngBounds.northeast.x
和
getProjection().getVisibleRegion().latLngBounds.southwest.y
第一次启动应用程序(纵向模式)时,我得到x = 720和y = 1230。但是,将方向更改为横向后,我又看到了相同的值。
返回纵向模式会产生x = 1280和y = 670(这是我希望从横向模式得到的结果,然后返回横向模式会再次给出第一个数字。
就像投影总是在后面改变方向。
任何主意出了什么问题,以及如何解决?
onConfigurationChanged
(我假设您要检查x和y的值)被称为之前 GoogleMap可以更新其投影。
我发现此问题的一种方法是触发0%的虚拟缩放,完成后将调用onCameraIdle
(使用更新的投影)// 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) ); }