问题标签 [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 投票
3 回答
1258 浏览

javascript - 拆分过大路径时 Google Maps Elevation Service 响应不准确

这是一个有点细节的问题,所以让我先解释一下情况,然后是我的实现,最后是这个问题,这样你就明白了。

自 4 月 4 日起,添加了更新,并将问题缩小到一个未决问题,请参阅此问题的底部以获取最新信息。

TLDR;

我从 Google Maps Directions API 返回了一条很长的路线,并且想要该路线的高程图。太糟糕了,它不起作用,因为它是通过 GET 请求的,并且 URL 最大长度是 2.048 个字符,超出了。我拆分了请求;使用 Promises 保证正确的处理顺序;但海拔数据并不总是完整的完整路线,并不总是以正确的顺序显示,并不总是遵循给定的路径,而且海拔间的位置有时跨越几公里。

介绍;

尝试为 Google Maps DirectionsService 响应创建高程图时,我遇到了路线太长的问题(这似乎与距离无关,而不是与每个 overview_path 的 LatLng 数有关)。这是因为 ElevationService 是通过请求的,GET并且 URL 的最大长度为 2048 个字符。这个问题也在 SO here 上进行了描述

执行;

我想我会比谷歌更聪明(不是真的,但至少试图找到一种解决方法),将 DirectionsService(overview_path属性)返回的路径分成批次并连接结果(elevations由 ElevationService 方法返回getElevationsAlongPath) .

  • 为了获得最佳细节水平,我使用每批 512 个样本查询 ElevationService;
  • 因为 ElevationService 将样本分布在路径的长度上,所以我设置了LatLng每个批次的最大数量,并检查需要多少批次来处理完整路径 ( totalBatches = overview_path.length / maxBatchSize);
  • 最后让我的路线分布均匀,从而尝试为完整路线(batchSize = Math.ceil(overview_path.length / totalBatches))获得相同级别的详细信息。

虽然 ElevationService 异步工作,但我确保在其他 SO 用户的帮助下,所有请求都以正确的顺序处理,首先使用 setTimout,现在使用 Promises。

我的代码

边注;

我还在批量处理 DirectionService 的请求,以解决该服务的 8 个航点限制,但我可以确认这不是问题,因为我也面临 8 个或更少航点的问题。

问题;

我面临的问题是:

  • 高程数据并不总是遵循路线的完整路径,这意味着图表中的最后一个高程点距离路线末端(远);
  • 海拔数据有时会以随机顺序显示,就好像 Promise 似乎还没有等待下一个任务执行一样;
  • 海拔数据并不总是遵循给定批次LatLngoverview_path提供的给定数据(见截图);
  • 高程距离数据很多。有时跨越多个公里,同时请求 512 个样本以获得均匀匹配的批次大小,LatLng每批次最多 200 秒。

海拔数据不遵循它被告知要遵循的overview_path

我认为使用 Promises 批处理 ElevationService(以及在使用 setTimtout 计时之前)可以解决我所有的问题,但我解决的唯一问题是不超过 2.048 字符请求 URL 并面临上述新问题。

非常感谢帮助

另外我想提出250个代表。就在这个问题上的赏金,但目前这是不可能的。因此,请随时回复,因为我稍后可以添加赏金并将其奖励给解决所描述问题的答案。250 代表。赏金已被授予以感谢您为我指明正确的方向。

感谢阅读和回复!

4 月 4 日更新,留下 1 个未决问题(据我目前所知)

解决了随机顺序高程的问题

当我注意到方向结果中的不一致行为时,我已经能够解决一些问题。这是由一个明显的原因引起的:异步调用不是“承诺”安排的,所以有时顺序是正确的,大多数时候不是。起初我没有注意到这一点,因为标记显示正确(缓存)。

解决了高程距离问题

显示高程数据的 div 只有 300 像素宽,并且包含许多数据点。由于宽度如此之小,我根本无法将鼠标悬停在足够多的点上,从而导致触发彼此相距较远的高程点。

高程数据未沿路线显示的问题

不知何故,我也解决了这个问题,但我不确定更大的宽度或“有希望”的方向顺序是否解决了这个问题。

待解决的问题:高程数据并不总是完整的

唯一剩下的问题是高程数据并不总是覆盖完整路径。我相信这是因为 Promising 逻辑中的错误,因为在控制台中记录一些消息告诉我海拔图是在并非所有 Promise-then 完成的点绘制的,我认为这是由于在 Over 时重新触发批处理调用引起的Google Maps API 返回查询限制错误。

当返回 Over Query Limit 错误时,如何重新触发同一个链?我试图不再解决相同的功能,而只是触发setTimeout(...),但此时 Promise 似乎没有解决重新触发的批处理,因为它不再获得 Over Query Limit。目前这是我设置它的方式(对于方向和高度):

0 投票
1 回答
1776 浏览

python - Google Elevation API - 3D 叠加的表面高度?

我一直在使用 Google Maps Elevation API 并使用示例Python 代码

在谷歌地球/地图中有很多地方可以看到 3D 叠加(我猜来自摄影测量)。例如,Ferndown Industrial Estate (50°48'41.75"N, 1°54'59.85"W) 有一些以 3D 形式投影的常规工业建筑。如果我在这里使用 Elevation API 进行探索,我希望能找到返回的建筑高度。我没有,我只是得到一些相当恒定的地面高度。

谁能告诉我如何通过 Google API 访问建筑物高度?可能吗?

0 投票
1 回答
98 浏览

google-api - 如何使用它们的纬度和经度在两个兴趣点之间映射 SRTM/DED(数字高程数据)

我正在为我的论文制作一个基于 Web 开发的微波通信分析工具。所以我意识到我需要了解以 SRTM 数字高程数据形式提供的地理数据,使用地球特定部分的高程数据。

为此,我有一个由用户设置的发射器和接收器位置,现在我正在尝试将来自 srtm 数据的高程数据与发射器和接收器进行映射,这将用于查找 freznal 区域是否清晰。

我对GIS工具一无所知。我用谷歌搜索并发现了 splat 工具,它基本上在 linux 上运行,我有一个 Windows 平台,所以不继续使用它 atm 我也了解了谷歌提升服务,但找不到任何相关的东西。

本质上,我试图弄清楚如何通过数据将数据映射到左侧的发射器和右侧的接收器以及某种图片中显示的高程数据的绘图。

我知道我要问的内容非常模糊,但我不知道该怎么做。我需要可以帮助我的方向,因为我似乎不知道从哪里开始阅读这个。任何帮助将不胜感激。

0 投票
1 回答
301 浏览

javascript - Google Elevation 调用适用于浏览器,但不适用于 node.js

TL;博士

我正在使用 node.js 构建一个应用程序,该应用程序从一组纬度/经度点开始检索海拔。

为了从纬度/经度坐标获取海拔,我使用 GoogleMaps API,特别是Google Elevation API (在此处查找文档)

为什么这个网址

通过浏览器工作并返回数据,而在 node.js 中没有发生同样的情况,导致以下响应错误?


为了最勇敢的人

这是我正在使用的坐标,这给我带来了麻烦:

我正在使用折线模块通过折线算法转换坐标,效果很好。坐标转换为以下字符串:

您可以在此处直接从 Google 的 Poliyne 实用程序仔细检查结果的有效性,但我保证该字符串是正确的。

到目前为止没有问题,我很高兴地构建了请求 url,结果如下

url 在浏览器中就像一个魅力,输出如下

不幸的是,相同的url 在 node.js 中不起作用。我在这里使用请求模块来完成肮脏的工作,如下所示:

使用 node 运行它,在控制台中打印以下内容:

该问题与代码逻辑无关,因为使用相同的逻辑从 15k 到 30k 海拔没有问题,如果你不相信我(你应该)你可以测试以下坐标

任何提示或帮助?为什么会有这种不同的行为?提前致谢

0 投票
1 回答
578 浏览

google-maps-api-3 - 谷歌地图 API v3 高程服务。从什么衡量?

Google maps API v3 Elevation Service 返回 hieavailable ght 或 depth,但相对于什么?是 MSL(平均海平面 [平均值])还是实时(即:考虑潮汐)

我还注意到,如果该位置的海拔高度没有记录在案,它的平均值是最近的四个。但是四个距离有多远(即:如果相距10klm,平均值没有意义)

我的申请是针对低于水的深度(海平面),所以潮汐高度很重要

0 投票
0 回答
250 浏览

resolution - Google Elevation API 分辨率范围和数据源

来自 Google Elevation API 的高程数据的最小和最大分辨率是多少?

“一个分辨率值,表示插值高程的数据点之间的最大距离,以米为单位。如果分辨率未知,则此属性将丢失。请注意,当多个点被测量时,高程数据会变得更粗糙(更大的分辨率值)通过。要获得一个点的最准确的高程值,应该独立查询。- https://developers.google.com/maps/documentation/elevation/intro

它是从哪些数据源构建的?SRTM1(美国 30m)?SRTM3(全球 90m)激光雷达?国家高程数据集(NED)?

0 投票
2 回答
1198 浏览

javascript - 来自谷歌海拔 API 的位置始终为 NaN

我不明白如何检索谷歌海拔结果的经纬度。

谷歌像这样返回我的json:

例如,elevation我可以访问。elevations[0].locationelevations是 JSON 结果)。

对于我访问我所做的纬度elevations[0].location.lat,问题是function (){return a}我无法检索纬度。

我想将结果存储在一个顶点中:

如果我这样做var vertex = new Vertex(elevations[0].location.lat, elevations[0].location.lng, elevations[0].elevation); x并且y总是NaN为什么?

0 投票
1 回答
1719 浏览

java - 谷歌的距离矩阵 API 是否也考虑“海拔”?

谷歌的距离矩阵 api 在显示两个经纬度点之间的距离时是否考虑“海拔”?

假设第一个人在机场的上层,第二个人站在同一机场的下层同一行,谷歌距离矩阵 api 显示的距离是否会考虑两个人之间的垂直距离?

0 投票
1 回答
1152 浏览

java - 使用 gps 获取错误的纬度和经度

我使用https://stackoverflow.com/a/5672274/6881568来查找海拔。我正在传递使用 GPS 获得的经度和纬度值(代码如下)

当我在大楼的不同楼层进行如下测试时,我得到了错误的结果,

AT 5 楼 -(纬度 = 12.9174253,经度 = 77.5005331,海拔 = 2636.495278941856 英尺)

AT 4楼-(纬度=12.9176438,经度=77.5004883,海拔=2634.1930440302203英尺)

AT 3楼-(纬度=12.9175136,经度=77.5005331,海拔=2635.651439701728英尺)

这是错误的,我在第 3 级得到 2635,在第 4 级得到 2634。第四层的高度应该更高。在第二层我又得到了 2636 英尺

0 投票
1 回答
814 浏览

android - Android:在GoogleMaps的街道上找到2个或更多点之间的最快路线

我在我的应用程序中添加标记GoogleMaps,我的标记总是在街道上。例如,我在地图上有超过 2 个标记,我需要根据街道在它们之间绘制最佳路线。是否有任何服务可以帮助我,或者我需要创建我自己的算法?到目前为止,我使用Google Elevation APIand进行了一些工作Google Direction API,但现在我需要Google Roads API, 来找到点之间的最佳道路?它必须与我的需求相似。