【发布时间】:2013-07-15 17:55:18
【问题描述】:
我正在使用 google maps api 来计算我公司的车辆在一段时间内在每个州行驶的里程数。对于在此期间进行的旅行,用户将在地图上创建路线,程序应该能够生成一些输出,例如:“马里兰州:100 英里,弗吉尼亚州:500 英里”等。
我很确定我可以通过发送 DirectionsService 请求并遍历 response.routes[i].legs[i].steps[i].path 数组来做到这一点,但不幸的是,这需要在数千个 LatLngs 上发送 Geocoder 请求,这很快就让我失望了我的配额。有没有更好的方法来解决这个问题?我真的只需要检测路线何时越过状态线并将其分解为单独的路线,但我不知道如果不迭代 path 数组我将如何做到这一点。
【问题讨论】:
-
如果你的路径数组中有 1000 个元素并且你是二分搜索(而不是迭代),它应该只需要 12 次调用 LatLng 来确定路径跨越边界的位置。您是否正在寻找一种解决方案,该解决方案涉及最大限度地减少您必须检查的路径数组中的项目数量,或者您是否正在寻找一种在 API 中为您找到边界的解决方案?
-
一个简单的测试路由生成了900多个LatLng对象,服务器只响应了4个请求。一条经过多个州的路线很容易产生数以万计的LatLng;我认为没有任何方法可以充分减少请求负载。
-
实际上,我可以通过将您的二分搜索建议与 3.5 秒超时(永恒,但我会立即采取我能得到的)相结合来使其工作。将其发布为答案,我会接受。