Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改谷歌地图';s轴旋转_Java_Android_Google Maps_Google Maps Android Api 2 - Fatal编程技术网

Java 更改谷歌地图';s轴旋转

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

我正在Android应用程序中使用谷歌地图API,并尝试旋转地图。我已经改变了方向角值,但问题是它绕着屏幕中心旋转

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

请参阅答案更新。