Android根据目的地设置标记旋转

时间:2016-03-22 21:13:12

标签: android google-maps

这是我的代码到目前为止,正在改变标记关于平板电脑位置的旋转。

float[] mGravity;
float[] mGeomagnetic;
Float azimut;
Marker Mymarker;
MarkerOptions MyMarkerOption = new MarkerOptions();

public void onSensorChanged(SensorEvent event) {

    if(GotLocation){

        if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
            mGravity = event.values;

        if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
            mGeomagnetic = event.values;

        if (mGravity != null && mGeomagnetic != null) {
            float R[] = new float[9];
            float I[] = new float[9];
            boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);

            MyLocation = new LatLng(currentLatitude, currentLongitude);

            if (success) {
                float orientation[] = new float[3];
                SensorManager.getOrientation(R, orientation);
                azimut = orientation[0];

                float azimuthInRadians = orientation[0];
                float azimuthInDegress = (float)(Math.toDegrees(azimuthInRadians)+360)%360;

                if(location_marker == 0){
                    MyMarkerOption.position(MyLocation);
                    Mymarker = map.addMarker(MyMarkerOption);
                    location_marker++;
                }

                Mymarker.setPosition(MyLocation);
                Mymarker.setRotation(azimuthInDegress);
                Mymarker.setFlat(true);
            }
        }
    }
}

我希望标记的旋转在给定的lat-long位置上发生变化。所以我想现在算法正在计算平板电脑的 azimuthInDegress 。我想它会根据给定的点来计算它。

我发现这个thread有人在问同样的事情,但我不知道如何为我的代码实现这个解决方案。线程也是5岁,所以也许现在还有另一个解决方案。

0 个答案:

没有答案