高度总是返回 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 的位置更新结果。

调用setLatitudesetLongitude 不会神奇地为您填充该位置的高度。

【讨论】:

那么在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 高度

oracle 正则查询json返回报文中某个字段的值

后台返回对象数组,对象属性相同时,只取一个对象

C++ WinAPI - GetConsoleScreenBufferInfo 总是因句柄无效而失败(返回 0)

如何从excel UDF中使用撇号返回值

jq获取元素的宽高(内边距和外边距)