【问题标题】: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));

我想改变它的旋转轴,让它围绕屏幕底部的一个点旋转

有没有改变地图旋转轴的功能?

【问题讨论】:

  • 请查看答案更新。

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


【解决方案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));
...

【讨论】:

    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2012-09-24
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多