Android Maps V2 如何使用指南针旋转地图视图

11
我正在开发一个需要使用指南针旋转地图视图的应用程序。我知道如何旋转摄像机,但我需要用指南针旋转地图视图,并以当前位置为中心点。我找到了Maps V1的代码,但我需要在Maps V2中实现它。
2个回答

22

好的,我自己解决了。首先需要从指南针计算方位角,然后可以旋转Maps api-2相机。

public void updateCamera(float bearing) {
            CameraPosition currentPlace = new CameraPosition.Builder()
                    .target(new LatLng(centerLatitude, centerLongitude))
                    .bearing(bearing).tilt(65.5f).zoom(18f).build();
            googleMap.moveCamera(CameraUpdateFactory.newCameraPosition(currentPlace));

    }

在你的代码中设置SensorListener,并在onSensorChanged事件中调用此方法。我已经添加了倾斜值,因此地图将以3D形式旋转。


虽然这并不太重要,但是 .bearing 是一个浮点数。 - Chrispix
6
你如何获得轴承(bearing)? - sealskej
如果您使用的是GoogleMap而不是MapView,则可以使用mMap.setOnMyLocationChangeListener事件。 - Joubert Vasconcelos
我们如何在V3中实现这个功能?请提供建议。 此外,我已发布了类似的问题,以通过更改方向3次(每次旋转120度以围绕中心点旋转1个周期)来旋转地图360度,但存在缓动和抖动。我该如何避免这些问题? https://dev59.com/bFYM5IYBdhLWcg3w-T4e - Nah
如果您能展示如何得到方位角,那将非常好,因为这是非常重要的信息。 - lostintranslation
您可以从位置提供程序返回的位置(当前位置)中获取方位值。 - Nas

3
在你的GoogleMap对象中,你可以访问getMyLocation方法。它会返回一个Location对象,其中包含getBearing方法。该方法返回一个浮点数[0..360],该值是从上一次已知位置和当前位置计算而来的,0度表示北轴,旋转方向为顺时针方向。
简而言之,你可以使用以下代码:
GoogleMap gMap = ..... 
float bearing = gMap.getMyLocation().getBearing();
CameraPosition newCamPos = new CameraPosition(latLngObject,
            zoomValue,
            tiltValue,
            bearing);
gMap.animateCamera(CameraUpdateFactory.newCameraPosition(newCamPos), durationValue, null);

我们如何在V3中实现这个?请提供建议。 此外,我已经发布了类似的问题,以通过更改方位3次(每次120度)将地图旋转360度以围绕中心点旋转1个周期,但存在缓动和抖动。我该如何避免这种情况。 https://dev59.com/bFYM5IYBdhLWcg3w-T4e - Nah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接