Java 更改谷歌地图';s轴旋转
我正在Android应用程序中使用谷歌地图API,并尝试旋转地图。我已经改变了方向角值,但问题是它绕着屏幕中心旋转Java 更改谷歌地图';s轴旋转,java,android,google-maps,google-maps-android-api-2,Java,Android,Google Maps,Google Maps Android Api 2,我正在Android应用程序中使用谷歌地图API,并尝试旋转地图。我已经改变了方向角值,但问题是它绕着屏幕中心旋转 CameraPosition bottomPos = new CameraPosition.Builder() .bearing(bearing) .build(); mainMap.animateCamera(CameraUpdateFactory.newCameraPosition(bottomP
CameraPosition bottomPos = new CameraPosition.Builder()
.bearing(bearing)
.build();
mainMap.animateCamera(CameraUpdateFactory.newCameraPosition(bottomPos));
我想改变它的旋转轴,让它围绕屏幕底部的一个点旋转
是否有任何功能可以更改地图的旋转轴?无论如何,您可以使用类似的解决方法-通过创建两倍于宽度和高度的
MapView
(MapFragment
)并使用边距将其位置与中心底部对齐,将地图旋转中心点移动到屏幕底部,如下图所示:
在这种情况下,默认情况下:
CameraPosition bottomPos = new CameraPosition.Builder()
.bearing(bearing)
.build();
mainMap.animateCamera(CameraUpdateFactory.newCameraPosition(bottomPos));
您的mainMap
将围绕屏幕底部的中心旋转
更新:
您还可以使用“获取当前地图中心屏幕坐标”,然后更改y
坐标并获取新的屏幕中心。诸如此类:
...
CameraPosition bottomPos = new CameraPosition.Builder()
.bearing(bearing)
.build();
mainMap.moveCamera(CameraUpdateFactory.newCameraPosition(bottomPos));
LatLng mapCenter = mainMap.getCameraPosition().target;
Projection projection = mainMap.getProjection();
Point centerPoint = projection.toScreenLocation(mapCenter);
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int displayHeight = displayMetrics.heightPixels;
centerPoint.y = centerPoint.y - displayHeight / 2; // move center down
LatLng newCenterPoint = projection.fromScreenLocation(centerPoint);
mainMap.animateCamera(CameraUpdateFactory.newLatLngZoom(newCenterPoint, zoom));
...
请参阅答案更新。