我花了大约一周时间尝试研究如何通过我的Android应用程序连接到USGS Elevation Query Service API并获得令人尴尬的结果。我发现的最好的是6年前here使用现已弃用的代码。掠夺者 - 我无法让它发挥作用。
使用GPS进行升高对于我的应用需求来说太不可靠了,即使在对数据进行大量移动平均和低/高通滤波之后也是如此。
任何人都可以通过USGS海拔查询服务分享他们的建议/代码来检索海拔。我当然可以提供纬度和经度吗?
答案 0 :(得分:3)
我刚浏览此页面寻找相关内容,发现第一个响应中有错误。它说:
以下是打给拉斯维加斯的示例电话 http://nationalmap.gov/epqs/pqs.php?x=36.1251958&y=-115.3150863&output=json&units=Meters
问题是,根据他们的网站,“如果无法在 请求的点,此服务返回-1000000“,我个人 找不到他们有位置的任何位置(尝试过拉斯维加斯 和旧金山)。
该示例将X和Y颠倒了。切换到
https://nationalmap.gov/epqs/pqs.php?y=36.1251958&x=-115.3150863&output=json&units=Meters
,效果很好。希望这对将来的搜索者有所帮助!
答案 1 :(得分:2)
简单的谷歌搜索" USGS海拔查询服务API"指向http://ned.usgs.gov/epqs/(与您链接的问题不同的地址。而且API似乎非常简单。
以下是拉斯维加斯http://nationalmap.gov/epqs/pqs.php?x=36.1251958&y=-115.3150863&output=json&units=Meters
的示例电话问题在于,根据他们的网站"如果无法在请求的点找到数据,此服务将返回-1000000"而且我个人无法找到他们所在位置(尝试拉斯维加斯和旧金山)。
或者,Google有一个提升API,考虑到谷歌地图,我只能认为它非常好。您可以在此处查看文档https://developers.google.com/maps/documentation/elevation/start,这是一个示例查询https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034
对于实际的调用本身,建议使用OkHttp(http://square.github.io/okhttp/)或Retrofit(使用OkHttp)为你做线程),但基本代码是:
OkHttpClient client = new OkHttpClient();
String getElevation(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
然后它只是解析Json字符串
答案 2 :(得分:1)
您只需使用Google推荐的HttpUrlConnection替换已弃用的httpClient即可使用您引用的那个。那里有很多教程,包括Google's own sample code explained here.