bearingTo(Location dest)的确切计算结果是什么?

时间:2015-04-22 18:51:44

标签: android

bearingTo(Location dest)完全计算什么?任何人都可以解释一下吗?

提前致谢。

 protected void onCreate(Bundle savedInstanceState) {
    DestinationLoc.setLatitude(39.543394);
    DestinationLoc.setLongitude(-119.816010);
    LocationManager lm =(LocationManager)getSystemService(LOCATION_SERVICE);
    String provider = lm.getBestProvider(new Criteria(), true);
    loc=lm.getLastKnownLocation(provider)
    }

    public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
      Startloc.setLatitude(loc.getLatitude());
      Startloc.setLongitude(loc.getLongitude());
    if ( Startloc == null ) return;

    float azimuth = event.values[0];
    float baseAzimuth = azimuth;
    mInitialPosition.setText("Initial LatLong: " + Startloc.getLatitude() + " " + Startloc.getLongitude());
    GeomagneticField geoField = new GeomagneticField( Double
            .valueOf( Startloc.getLatitude() ).floatValue(), Double
            .valueOf( Startloc.getLongitude() ).floatValue(),
            Double.valueOf( Startloc.getAltitude() ).floatValue(),
            System.currentTimeMillis() );
    azimuth += geoField.getDeclination(); // converts magnetic north into true north

    //Correct the azimuth
    azimuth = azimuth % 360;

    //This is where we choose to point it
    float direction = azimuth + Startloc.bearingTo( DestinationLoc );
    float direction2 = Startloc.bearingTo(DestinationLoc);

}

direction2值显示为负值。

2 个答案:

答案 0 :(得分:2)

来源:Android Developers Bearing基本上是另一个与Android中的Location对象关联的ATTRIBUTE。因此,位置有纬度,长度,它可以承载,高度,速度。根据方法描述getBearing(),它表示设备的水平方向。

来源:Wikipedia

在陆地航行中,轴承通常以顺时针方向计算,从参考方向0°开始增加到359.9度。[4]以这种方式测量,轴承被美国陆军称为方位角,而不是其他使用术语轴承的英语国家的军队。[5]如果参考方向是北(正北,磁北或网格北),则轴承称为绝对轴承。在现代陆地导航环境中,真正的,磁性的和栅格轴承总是以这种方式测量,在360度系统中真正的北极,磁北极或网格北极为0°。[4]

答案 1 :(得分:0)

请阅读documentation。它准确地描述了该方法返回。

  

以真北向东返回近似初始方位   当沿着这个位置和之间的最短路径行驶时   给定的位置。使用WGS84定义最短路径   椭球。 (几乎)反对的位置可能会产生   无意义的结果。

     

<强>参数

     

dest 目的地位置

     

<强>返回

     

以度为单位的初始轴承