Google maps api 3 谷歌地图API-检测穿越州际线的时间,并计算每个州的行驶距离

Google maps api 3 谷歌地图API-检测穿越州际线的时间,并计算每个州的行驶距离,google-maps-api-3,Google Maps Api 3,我使用谷歌地图api来计算我公司的车辆在一段时间内在每个州行驶的英里数。对于这段时间内的行程,用户将在地图上创建路线,程序应该能够生成一些输出,如:“马里兰:100英里,弗吉尼亚:500英里”,等等 我很确定我可以通过发送DirectionsService请求并迭代response.routes[I].legs[I].steps[I]来完成.patharray,但不幸的是,这需要在数千个LatLngs上发送Geocoder请求,这很快就超出了我的配额。有没有更好的方法来实现这一点?我真的只需要检

我使用谷歌地图api来计算我公司的车辆在一段时间内在每个州行驶的英里数。对于这段时间内的行程,用户将在地图上创建路线,程序应该能够生成一些输出,如:“马里兰:100英里,弗吉尼亚:500英里”,等等


我很确定我可以通过发送
DirectionsService
请求并迭代
response.routes[I].legs[I].steps[I]来完成.path
array,但不幸的是,这需要在数千个
LatLng
s上发送
Geocoder
请求,这很快就超出了我的配额。有没有更好的方法来实现这一点?我真的只需要检测路线何时跨越州界线并将其分成不同的路线,但我不知道如何使用在
路径
数组上进行迭代。

查看面板中的方向文本,看起来文本“Entering”出现在跨越州边界的步骤中。

  • 进入新泽西州
  • 进入特拉华州
  • 进入马里兰州
  • 进入哥伦比亚特区
(这没有记录,因此可能会停止工作)

您还可以找到方向多段线与一组状态多边形的交点。

就我个人而言,我会使用类似的方法,而不是谷歌

使用Geonames,您很可能会像使用Google一样遇到配额问题,但是,这有很大的不同…Geonames允许您下载各种数据集,以便您可以提供自己的自托管地理服务…无配额

我从来没有这样做过,所以我只能建议你在Geonames网站上翻找一下,以获得指导

原则上,您需要:

  • 下载US.zip数据集并安装在服务器(或用于开发的本地主机)上
  • 编写一个专门的(RESTful)web服务(例如,在PHP中),它完成所有跨越calc的州线,并返回每个州的里程的JSON编码列表
通过在服务器端进行硬计算并返回捆绑结果,您只需要发出一个HTTP请求(每个公司车辆)

当然,服务器将需要适当的lat/lng路径数据,但根据您在问题中所说的,这已经是服务器端的数据,因此不需要将其下载到客户端,以便在请求中重新发送

有趣的项目。从一开始,您就需要考虑您的测试/验证策略


很抱歉,我无法提供更多帮助,但这可能会给您一条前进的道路。

如果您的路径数组中有1000个元素,并且您正在进行二进制搜索(而不是迭代),则只需调用12次LatLng即可确定路径跨越边界的位置


当您超过配额时,您会得到什么样的反馈?如果是异常返回,您总是可以在收到配额回推时等待3.5秒。

如果您的路径数组中有1000个元素,并且您正在进行二进制搜索(而不是迭代),只需12次调用LatLng即可确定路径跨越边界的位置。您是在寻找一种解决方案,该解决方案涉及最小化必须检查的路径数组中的项目数,还是在API中寻找一种解决方案,该解决方案将为您找到边界?一个简单的测试路径生成了900多个LatLng对象,一个nd服务器只响应了四个请求。一条经过多个状态的路由很容易生成数万个Latlng;我认为没有任何方法可以充分减少请求负载。实际上,我能够通过将您的二进制搜索建议与3.5秒超时结合起来使其正常工作(一个永恒,但我现在就要我能得到的)。将其作为答案发布,我将接受。可能重复您提到的内容,州多边形可能是一种方式。但是,它们的设置将非常繁琐,因此在此期间,我必须让用户手动放置路线穿过州线的航路点。这是一个例外返回,但配额很快就会达到,因此f通常,我更喜欢将查询分隔开,以获得稳定、一致的流。我已将延迟减少到3秒,在再次尝试之前,当达到配额时,会额外超时3秒。与我尝试过的其他时间组合相比,这是最容易忍受的。但您的二进制搜索建议非常关键--非常有效。Tha你能给我们举个例子吗?