【问题标题】:Google Distance Matrix API's sending array and processing return to match IDGoogle 距离矩阵 API 发送数组并处理返回以匹配 ID
【发布时间】:2017-01-30 02:22:57
【问题描述】:

我被要求改进一个系统,该系统当前将客户地址输入到某些表单字段中,并且在提交系统时,系统会根据客户地址查询属于员工的郊区数据库。它返回每个员工旅行时间/距离的公里和距离时间,以便提交请求的人知道哪个员工可以最快地到达该客户。目前,系统逐个循环遍历每个工作人员。每次通过时,它都会查询谷歌矩阵 api。有 45 名以上的员工循环遍历它需要 15 到 35 秒的时间来返回整个列表。

我找到了一种方法,可以在一个查询中将所有地址作为 url 传递给谷歌矩阵 api 并返回一个数组。它现在下降到不到 1 秒,几乎是即时的。发送的示例请求可见here

我现在遇到的问题。是否将这些起源郊区中的每一个都分配给了工作人员用户。无法将该员工用户 ID 或唯一标识符发送到 google api,反过来我不确定如何返回每个结果并将其与员工郊区相匹配。

有人有想法吗?

我目前正在使用 php 执行 curl 请求以生成该 url 并从数组中的 google matrix api 获取响应。

【问题讨论】:

  • google结果的顺序好像和原点的顺序一样。只需匹配键即可确定哪些结果指向哪个用户。
  • 我真的希望它不是那么简单.. 现在你提到它我不敢相信我没有想到这一点。生病了,让你知道。谢谢;)
  • 你是对的@Scopey .... 使用键进行比较大约需要 10 秒来修复。我按照下面的答案做了一个功能。
  • 请告诉我如何制作该来源字符串并传递给谷歌

标签: php api


【解决方案1】:

已根据 Scopey 的建议通过在两个数组中使用键并匹配它们来解决此问题。

function array_merge_custom($array1,$array2) {
    $mergeArray = [];
    $array1Keys = array_keys($array1);
    $array2Keys = array_keys($array2);
    $keys = array_merge($array1Keys,$array2Keys);

    foreach($keys as $key) {
        $mergeArray[$key] = array_merge_recursive(isset($array1[$key])?$array1[$key]:[],isset($array2[$key])?$array2[$key]:[]);
    }

    return $mergeArray;

}

【讨论】:

    猜你喜欢
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多