高度总是返回 0.00
Posted
技术标签:
【中文标题】高度总是返回 0.00【英文标题】:Altitude always returns 0.00 【发布时间】:2016-05-16 17:26:45 【问题描述】: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()));
【问题讨论】:
它应该返回什么? 你明白locationProvider.supportsAltitude();
返回一个boolean
值吧?你真的检查过这个值是否为真吗?因为您目前使用它的方式实际上什么也没做。
如果可用,它应该返回高度,以 WGS 84 参考椭球上方的米为单位。我尝试了几个坐标,但结果都是一样的。
是的 Luke 它返回 True
我的意思是,“应该为代码中的坐标返回什么特定高度?”但我想这没有实际意义。
【参考方案1】:
Location
类只是一个对象,用于存储来自 Location Provider 的位置更新结果。
调用setLatitude
和setLongitude
不会神奇地为您填充该位置的高度。
【讨论】:
那么在Location对象上调用getAltitude()是不对的?在我遵循的一个示例中,该示例检索了我应用 getAltitude() 的用户位置,但结果是相同的。 他们使用的 Location 对象很可能是由 Location Provider 创建的。 刚刚检查过,你是对的,他们确实使用了位置提供程序。您对我如何以另一种方式获得海拔高度有什么建议吗? 如果我的回答有帮助,请将其标记为解决方案。我建议查看 Google Maps Elevation API:developers.google.com/maps/documentation/elevation/intro?hl=en 谢谢,希望我不必走那条路,但看起来我别无选择。再次感谢您的帮助。【参考方案2】:您正在手动组装一个Location
对象。如果您希望 Location
对象为 getAltitude()
返回非零值,则需要调用 setAltitude()
。
如果您想获取设备的当前位置,可能包括其高度,您可以使用LocationManager
,如the documentation 所述。
如果您想获取特定纬度和经度的地球表面海拔高度,android 没有任何功能。您将需要找到某种具有这些详细信息的库或 Web 服务。
【讨论】:
这是我的问题。我正在手动组装一个 Location 对象,然后调用 getAltitude()。我将研究 LocationManager 路线。谢谢【参考方案3】:据我所知,位置只有在由 GPS 本身进行三角测量时才会有高度,使用卫星作为参考点。当您从提供者那里获得位置时,它会计算高度,但是当您强制使用特定坐标时,您不会得到。
要了解特定坐标的高度(不同于当前 GPS 坐标),您应该从地图(例如:bing3d 或 openstreetmap)中查询该信息。
【讨论】:
以上是关于高度总是返回 0.00的主要内容,如果未能解决你的问题,请参考以下文章
Robolectric 为具有换行内容高度的视图返回 0 高度