更改Google Map的旋转轴

时间:2019-09-21 18:38:43

标签: java android google-maps google-maps-android-api-2

我正在Android应用中使用Google Map API,并尝试旋转地图。我已经通过更改方位角值来做到这一点,但问题是它绕着屏幕的中心旋转。

CameraPosition bottomPos = new CameraPosition.Builder()
                    .bearing(bearing)
                    .build();

mainMap.animateCamera(CameraUpdateFactory.newCameraPosition(bottomPos));

我想更改其旋转轴,并使其绕屏幕底部的某个点旋转

有什么功能可以改变地图的旋转轴吗?

1 个答案:

答案 0 :(得分:2)

无论如何,您可以使用类似的解决方法-通过创建两倍于高的MapViewMapFragment)并使用边距将其位置旋转到中心底部,将地图旋转中心点移动到屏幕底部如下图所示:

Move rotation center

在这种情况下,默认值为:

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));
...