getAltitude()方法的返回值始终返回0.00。许多答案表明,可能由于提供商不支持高度详细信息。我检查了这个,它确实支持海拔高度。
我想从GPS坐标获取高度。任何帮助表示赞赏。
我的代码可以在下面看到。
LocationManager locationManager; LocationProvider locationProvider;
/* Get LocationManager and LocationProvider for GPS */
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);
/* Check if GPS LocationProvider supports altitude */
locationProvider.supportsAltitude();
//Location object
Location l = new Location("A");
l.setLatitude(40.796852);
l.setLongitude(-74.061340);
l.getAltitude();
//Returns 0.00
Log.i("Tag", String.valueOf(l.getAltitude()));
//returns True
Log.i("Tag", String.valueOf(locationProvider.supportsAltitude()));
答案 0 :(得分:1)
Location
类只是用于存储位置提供程序的位置更新结果的对象。
致电setLatitude
和setLongitude
不会为您神奇地填补该位置的海拔高度。
答案 1 :(得分:0)
据我所知,当GPS本身进行三角测量时,位置将只有一个高度,使用卫星作为参考点。当您从提供者处获得位置时,它会计算高度,但是当您强制使用特定坐标时,您无法获得该位置。
要知道特定坐标的高度(与当前GPS坐标不同),您应该从地图中查询该信息(例如:bing3d或openstreetmap)。
答案 2 :(得分:0)
您正在手动汇编Location
个对象。如果您希望Location
对象为getAltitude()
返回非零值,则需要致电setAltitude()
。
如果您希望获取设备的当前位置(可能包括其高度),可以使用LocationManager
中涵盖的Execute
。
如果你试图在特定纬度和经度上获得地球表面海拔以上的高程,那么Android没有任何东西。您需要找到某种具有这些详细信息的库或Web服务。