问题标签 [google-elevation-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
107 浏览

google-maps - Google Elevation API 路径参数错误

我正在使用谷歌海拔服务

我想为我的路径获取数据,其中包含大约 1k 个点。我知道我不能将它们全部发送到除以|分隔符的查询中,因为我会超出请求大小限制,所以我正在对这些点进行编码,正如编码折线算法在文档中提到的那样,并将它们发送如下:

要点:36.578581,-118.291994|36.23998,-116.83171

点编码:cgg~E|{~pUfcaAwe|G

点编码 + urlencoded:cgg%7EE%7C%7B%7EpUfcaAwe%7CG

但我收到以下错误消息:

Invalid request. Invalid 'path' parameter..

当我用非编码查询(路径由管道分隔符分隔)询问谷歌时,我收到了正确的数据。

你有什么提示我在这里做错了吗?

0 投票
1 回答
302 浏览

java - 谷歌地图高程 API 安卓工作室

我正在创建一个 android 应用程序来使用 Google Maps SDK 和 Google Play Services Location API 记录用户的活动。我正在尝试根据给定的纬度和经度检索用户的海拔高度。我最初使用 Location#getAltitude() 但后来意识到这并没有给出海拔高度。

我使用以下查询字符串继续使用开放式高程 API:

但是,该 API 在生成响应方面似乎太慢了。然后我找到了 Google Maps Elevation API,我们也可以使用 URL 发出请求。但是,我们需要传递一个 API 密钥,我不想在 URL 字符串中传递这个 API 密钥并最终将其提交到远程存储库。

在这个 repo (https://github.com/googlemaps/google-maps-services-java)中,我找到了这个类:/src/main/java/com/google/maps/ElevationApi.java 我认为我可以用来避免弄乱http请求。

在我的 gradle 中,我包含了这个依赖项:

目前,检索高程的代码如下:

既然我不想将它提交到存储库,我应该在这里为 API_KEY 传递什么?我在 local.properties 中为地图定义了一个 api 键,但是,如下所示:

基本上,我的问题是,我可以在未提交到 GitHub 的属性文件中定义 API 密钥,然后在代码中引用它吗?

谢谢你的帮助。

更新: 我已经设法使用 gradle 从 local.properties 读取 API 密钥,但从 ElevationApi 得到一个异常,说 API 21+ 预期,但是 30 ......奇怪。因此,我使用以下 Volley 请求回到开放高度 API:

我不得不将超时设置为一个很大的数字,不确定它应该有多高,因为由于响应时间慢,我收到了 Volley 超时错误。

还有其他方法可以检索有关海平面的高度吗?

0 投票
2 回答
162 浏览

r - 如何在给定纬度和经度的情况下提取海拔高度?

我正在尝试为我的数据中给定的一组纬度和经度提取海拔数据。我试图查找一些较旧的答案(从 9 到 10 年前)..但是许多方法已经过时或功能不起作用。有什么新鲜的建议吗?

我尝试了以下建议:

  1. 使用 geonames 包,并从 srtm3 数字高程模型中获取值

我遇到错误说:Error in url(url, open = "r") : cannot open the connection to 'http://api.geonames.org/srtm3JSON?lat=NA&lng=NA&

  1. 我尝试按照链接答案中的建议使用googlewayelevatr pacakages

对于最新的 R > 4.0 版本,不会下载 elevtr 包。

当我尝试安装所需的软件包时:

“软件包‘libudunits2’不适用于此版本的 R”

###编辑:什么有效?

0 投票
1 回答
53 浏览

swift - 对 Google Elevation API 的 Swift HTTP 请求

我正在尝试向 Google Elevation API 发送请求,但我已成功发送单个请求。GE API 的文档中指出,如果坐标作为由“|”分隔的列表传递,则单个请求可以包含许多坐标评估。

正如您在我的代码中看到的那样,我遵循包含以下内容的请求格式 >> 3.222,54.333 | 2.444, 66.4332 | ...

据我所知,这应该是可行的,但显然出了点问题。

这是一段代码,程序在该块内的错误点处中断。

0 投票
2 回答
210 浏览

json - JSON响应迅速解码为零

上面的代码包含响应的请求和解码,我对 JSON 不熟悉,这可能很明显。

我遇到的问题是打印时返回的结果都是零。

以前我没有使用解码,而是试图将数据处理成一个数组,可以检索单个值进行比较。

数组方法会产生无法管理的数据,因为元素没有按可管理的顺序分开。

像这样[零响应][1]

包含 print("---> data: (String(data: data, encoding: .utf8))") 的输出看起来像这样。

[可以在这里看到输出][2]

---> 数据:可选(“{\n“结果”:[\n {\n“海拔”:11.59268283843994,\n“位置”:{\n“纬度”:37.78533554077148,\n“lng”:- 122.4059982299805\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 11.68190288543701,\n "位置" : {\n "lat" : 37.78538513183594,\n "lng40": \n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 11.86490249633789,\n "位置" : {\n "纬度" : 37.78548812866211,\n "lng" : -122.405914306646 n },\n "分辨率" : 0。5964969992637634\n },\n {\n "海拔" : 11.53255939483643,\n "位置" : {\n "纬度" : 37.78533554077148,\n "lng" : -122.4061584472656\n },\n "分辨率" :37564\n999260 \n },\n {\n "海拔" : 11.46291351318359,\n "位置" : {\n "纬度" : 37.78533554077148,\n "lng" : -122.4063262939453\n },\n "分辨率" : 0.596\9699263763 n },\n {\n "海拔" : 11.69645023345947,\n "位置" : {\n "纬度" : 37.78558731079102,\n "lng" : -122.4059143066406\n },\n "分辨率" : 0.596496992637634\n },\n {\n "海拔" : 11.79109859466553,\n "位置" : {\n "纬度" : 37.78569030761719,\n "lng" : -122.4059143066406\n },\n "分辨率" : 0.59649699\n2637634\n}, n {\n "海拔" : 11.35733222961426,\n "位置" : {\n "纬度" : 37.78533554077148,\n "lng" : -122.4064865112305\n },\n "分辨率" : 0.5964969992637634\n }, {\n“海拔”:11.57364559173584,\n“位置”:{\n“纬度”:37.78533554077148,\n“lng”:-122.4066467285156\n},\n“分辨率”:0.5964969992637634\n},\n \n "海拔”:11.7429027557373,\n“位置”:{\n“纬度”:37.78578948974609,\n“lng”:-122.4059143066406\n},\n“分辨率”:0.5964969992637634\n},\n {\n“海拔" : 12.02133083343506,\n "位置" : {\n "纬度" : 37.78589248657227,\n "lng" : -122.4059143066406\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔: 11.66207313537598,\n "位置" : {\n "lat" : 37.78533554077148,\n "lng" : -122.4068145751953\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" 11.85497093200684,\n "位置" : {\n "纬度" : 37.78536987304688,\n "lng" : -122.4069137573242\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.220\11947631836, n "位置" : {\n "纬度" : 37.78599548339844,\n "lng" : -122.4059143066406\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.59670543670654,\n "位置" : {\n "纬度" : 37.78609466552734,\n "lng" : -122.4059143066406\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.19275951385498,\n地点” :{\n "纬度" : 37.78546905517578,\n "lng" : -122.4069137573242\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.13292598724365,\n "位置" \n "纬度" : 37.78557205200195,\n "lng" : -122.4069137573242\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.9876384735\n "位置" : { n "纬度" : 37.78619766235352,\n "lng" : -122.4059143066406\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 13.3654317855835,\n "位置" : {\n “纬度”:37。78629684448242,\n "lng" : -122.4059143066406\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.14237785339355,\n "位置" : {7565"lat.048828828 ,\n "lng" : -122.4069137573242\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.26948738098145,\n "位置" : {\n "lat" : 37.785774230957 \n "lng" : -122.4069137573242\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 13.74397277832031,\n "位置" : {\n "lat" : 37.78\33499145508, n"lng" : -122.4060211181641\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 14.1032075881958,\n "位置" : {\n "lat" : 37.78633499145508,\n" " : -122.4061889648438\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.31325626373291,\n "位置" : {\n "lat" : 37.7858772277832,\n "lng" : -122.4069137573242\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.36202812194824,\n "位置" : {\n "lat" : 37.78598022460938,\n "lng" -122。4069137573242\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 14.12999248504639,\n "位置" : {\n "纬度" : 37.78633499145508,\n "lng" : -128.94634 \n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 14.4321174621582,\n "位置" : {\n "纬度" : 37.78633499145508,\n "lng" : -122.4065093994141\n n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 12.53042221069336,\n "位置" : {\n "纬度" : 37.78607940673828,\n "lng" : -122.4069137573242\n },\n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 13.14097881317139,\n "位置" : {\n "纬度" : 37.78618240356445,\n "lng" : -122.40691\7573242\n }, n "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 14.39413261413574,\n "位置" : {\n "纬度" : 37.78633499145508,\n "lng" : -122.4066696166992\n }, "分辨率" : 0.5964969992637634\n },\n {\n "海拔" : 14.40865802764893,\n "位置" : {\n "纬度" : 37.78633499145508,\n "lng" : -122.4068374633789\n },\n分辨率”:0。5964969992637634\n },\n {\n "海拔" : 13.98401737213135,\n "位置" : {\n "纬度" : 37.78628158569336,\n "lng" : -122.4069137573242\n }644\n "分辨率" 99926:3 \n }\n ],\n "status" : "OK"\n}\n") Jresponse(分辨率:无,海拔:无,位置:无,纬度:无,lng:无)[1]:纬度:无,液化天然气:无)[1]:纬度:无,液化天然气:无)[1]:https://i.stack.imgur.com/uaRZZ.png [2]:https ://i.stack.imgur.com/MWJZX.png

0 投票
1 回答
55 浏览

javascript - Google Elevation API 如何将折线“分解”成等距点?

Google 提供的 Elevation API 使用两个参数来请求沿路径的高度:pathsamples。路径是起点latlng终点的和,samples是沿要返回高程数据的路径的样本点。因此,路径被划分为沿路径的一组有序等距点,这些点作为 的数组发送回客户端latlngelevation针对每个点。这对于可视化高程剖面等很有用。

我已经看到了 Google Elevation API 的其他开源替代方案,但是,它们都没有提供samples参数的简单方法,因此如果想要实现相同的目标,您只需以某种方式将自己的路径“分解”成多个等距点并将此数组作为 URL 的一部分发送到后端。

在将路径(通常是 LineString / polyline 类型)分割成等距点时,我应该考虑一个库或算法吗?一般来说,我应该如何解决这个问题?

0 投票
1 回答
52 浏览

python - 使用 Elevation API 获取火星上地标的高度(使用 Google Earth Pro 标记)

我经常在 Google Earth Pro 和 Mars 上用地标标记好位置,然后将它们导出为 kml 文件(然后转换为 CSV)。此时,kml 文件包含位置坐标,但不包含高程。

对于在地球上标记的位置,我可以通过使用 Python 的 Google Map Platform 的 Elevation API ( https://developers.google.com/maps/documentation/elevation/requests-elevation ) 获取它们的海拔,参考包含的坐标以公里为单位。

在火星上标记的位置的情况下,我可以获得与上述海拔请求方式相同的海拔吗?你能推荐这样做的方法吗?