5

我正在尝试从 location.getAltitude() 方法获取当前高度。但它总是返回零。我应该怎么做才能获得当前的高度值。但正确获取经度和纬度。请给我建议。我在谷歌搜索并制定了一些样本,但所有样本都只返回零。

我使用过的代码:

在创建时我调用了 =getMyCurrentLocation(); 这种方法。

void getMyCurrentLocation() {
        LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener locListener = new MyLocationListener();
try{gps_enabled=locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);}catch(Exception ex){}
           try{network_enabled=locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);}catch(Exception ex){}  
if(gps_enabled){

                locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);

            }

            if(network_enabled){
                locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener);

            }


        if(gps_enabled){
                location=locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);



            }

            if(network_enabled && location==null)   {
                location=locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);  

            }

        if (location != null) {

            MyLat = location.getLatitude();
            MyLong = location.getLongitude();
    Toast.makeText(this,"My Lat : " + MyLat + "\n" + "My Long : " + MyLong, Toast.LENGTH_SHORT).show();

        } else {

        }


        System.out.println(" LATTITUDE " + MyLat);
        System.out.println("Longitude " + MyLong);

    }


public class MyLocationListener implements LocationListener

        {

        @Override

        public void onLocationChanged(Location loc)

        {

        MyLat =loc.getLatitude();
        MyLong=   loc.getLongitude();
       gooalt=getElevationFromGoogleMaps(MyLat,MyLong) ;
      double alt=loc.getAltitude(); **==>>> This one returns ZERO**

        String Text = "Longitud = " + (loc.getLongitude()) +"Latitud = " + loc.getLatitude()+"Altitude "+gooalt+"feet";

        Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show();


        }

        @Override

        public void onProviderDisabled(String provider)

        {

        Toast.makeText( getApplicationContext(),"Gps  Disabled",Toast.LENGTH_SHORT ).show();

        }

        @Override

        public void onProviderEnabled(String provider)

        {

        Toast.makeText( getApplicationContext(),"Gps   Enabled",Toast.LENGTH_SHORT).show();

        }

        @Override

        public void onStatusChanged(String provider, int status, Bundle extras)

        {

        }

        }
4

3 回答 3

1

你用什么方法来获取位置的?也许你可以尝试http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String ) 代替,这对我有用。

如果没有,也许尝试另一种方法,有几种方法:http: //developer.android.com/guide/topics/location/index.html

顺便说一句:你能给我们一些代码吗?你在什么设备上测试?

于 2012-04-27T11:49:05.107 回答
1

网络位置没有高度。GPS 可以,但如果你总是得到 0,那么你的 GPS 硬件可能坏了。关闭手机上的网络位置设置并尝试使用地图应用程序,看看您是否从 GPS 获得任何修复。

于 2012-05-23T07:31:28.073 回答
0

我想知道为什么它没有获得高度值,您的代码是正确的。尝试删除网络提供商并仅在 gps 中测试代码,看看它是否获得任何值,如果您遇到任何问题,请在代码中告诉我您在哪里显示高度你能突出显示吗?如果你使用的是 String Text = "Longitud = " + (loc.getLongitude()) +"Latitud = " + loc.getLatitude()+"Altitude "+gooalt+"feet"; 对于高度错误,尝试使用 loc.getAltitude() 代替gooalt ..。

于 2012-12-05T07:10:52.997 回答