更改谷歌地图的旋转轴
Posted
技术标签:
【中文标题】更改谷歌地图的旋转轴【英文标题】:Change Google Map's axis of rotation 【发布时间】:2020-01-22 09:10:18 【问题描述】:我在 android 应用中使用 Google Map API 并尝试旋转地图。我已经通过改变方位值来做到这一点,但问题是它围绕屏幕中心旋转。
CameraPosition bottomPos = new CameraPosition.Builder()
.bearing(bearing)
.build();
mainMap.animateCamera(CameraUpdateFactory.newCameraPosition(bottomPos));
我想改变它的旋转轴,让它围绕屏幕底部的一个点旋转
有没有改变地图旋转轴的功能?
【问题讨论】:
请查看答案更新。 【参考方案1】:无论如何,您可以使用这样的解决方法 - 通过创建两倍宽和两倍高的 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));
...
【讨论】:
以上是关于更改谷歌地图的旋转轴的主要内容,如果未能解决你的问题,请参考以下文章