这是一个有一定程度细节的问题,所以让我首先解释一下情况,然后我的实现和最后的问题让你最了解.
截至4月4日,已添加更新,问题范围缩小为一个待处理问题,请参阅此问题的底部以获取最新信息.
TLDR;
我有一条很长的路线从谷歌地图方向API返回,并希望该路线的高程图表.太糟糕了它不起作用,因为它是通过GET请求的,并且URL最大长度是超过2.048个字符.我分开了请求; 使用Promises保证正确的处理顺序; 但是,对于完整路线,Evelation数据并不总是完整的,并不总是按照正确的顺序显示,并不总是遵循给定的路径,并且有时会跨越几公里的高程间隔.
介绍;
尝试为Google Maps DirectionsService响应创建高程图我遇到了路线太长的问题(这似乎与距离无关,而不是每个overview_path的LatLng数量).这是由于通过请求ElevationService GET
并且URL的最大长度为2048个字符的事实引起的.这里也描述了这个问题.
实施;
我想我会比谷歌更聪明(不是真的,但至少试图找到一种方法来解决它),分裂由为DirectionsService(返回的路径overview_path
属性)为批次,连接结果(elevations
通过ElevationService方法返回getElevationsAlongPath
) .
LatLng
每批的最大数量,并检查处理完整路径所需的批次数(totalBatches
= overview_path.length / maxBatchSize
);batchSize =
Math.ceil(overview_path.length / totalBatches)
).当ElevationService异步工作时,我确保在其他SO用户的帮助下,首先使用setTimout并使用Promises,以正确的顺序处理所有请求.
我的代码
var maxBatchSize = 200;
var currentBatch = 0;
var promise = Promise.resolve();
var totalElevationBatches = Math.ceil(directions.routes[0].overview_path.length / maxBatchSize);
var batchSize = Math.ceil(directions.routes[0].overview_path.length / totalElevationBatches);
while(currentBatch < totalElevationBatches) {
promise = addToChain(promise, currentBatch, batchSize);
currentBatch++;
}
promise.then(function() {
drawRouteElevationChart(); …
Run Code Online (Sandbox Code Playgroud) javascript batch-processing google-maps-api-3 map-directions google-elevation-api
我正在使用Google Elevation Service来获取路径上所有节点的高程,由用户绘制到Leaflet地图上.这允许我生成高程图.目前,如果我发出超过2个请求(每个请求限制512个位置),我总是会遇到一个请求OVER_QUERY_LIMIT
.
- 每天2,500个免费请求,以客户端和服务器端查询的总和计算; 使计费能够获得更高的每日配额,每次额外收费为0.50美元/ 1000美元,每天最多100,000个请求.
- 每个请求512个位置.
- 每秒50个请求*,计算为客户端和服务器端查询的总和.
我知道我每天都没有达到2500个请求(可以在开发者控制台中看到已经制作了多少个请求).我也知道每个请求肯定有512个位置,这使得唯一的配额是每秒50个请求.
为了处理大量节点,我正在执行以下操作:
行动准则:Codepen
如果我在每个请求(比如5秒)之间进行大量的等待时间,则请求被正常发送,但从我所知道的,我应该能够每秒发送50个请求 - 所以10,000个节点的列表应该需要20个请求,理论上甚至不需要等待 - 但即使等待它击中错误.
我正在尝试在 PHP 中回显地址的高度。我正在使用 Google Elevation API -链接
我已经有了纬度和经度。以下链接:
https://maps.googleapis.com/maps/api/elevation/json?locations=40.7143528,-74.0059731&key=myapikey
将产生以下 json 格式的结果:
{
"results" : [
{
"elevation" : 9.774918556213379,
"location" : {
"lat" : 40.7143528,
"lng" : -74.00597310000001
},
"resolution" : 19.08790397644043
}
],
"status" : "OK"
}
我怎样才能回显海拔高度?就像是<?php echo 'elevation'; ?>
谢谢