我正在Android应用中使用Google Map API,并尝试旋转地图。我已经通过更改方位角值来做到这一点,但问题是它绕着屏幕的中心旋转。
CameraPosition bottomPos = new CameraPosition.Builder()
.bearing(bearing)
.build();
mainMap.animateCamera(CameraUpdateFactory.newCameraPosition(bottomPos));
我想更改其旋转轴,并使其绕屏幕底部的某个点旋转
有什么功能可以改变地图的旋转轴吗?
答案 0 :(得分:2)
无论如何,您可以使用类似的解决方法-通过创建两倍于高的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));
...