当前位置: 首页 > 知识库问答 >
问题:

如何在google map api中为距离请求添加延迟

戎亦
2023-03-14

我正在使用谷歌地图api获取城市之间的距离,获取这些距离后,我想将它们存储在数组中。但是谷歌api不允许无延迟请求。我如何添加延迟。或者有没有其他方法可以获得驾驶距离。这是代码

<?php 
$origin="London";
$destination= array("Manchester","Bristol","glasgow","liverpool");
/* print_r($destination);
$size=sizeof($destination);
echo $size; */
$distance = array("abc");
for($i=0; $i<4;$i++){   
    $url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$origin&destinations=$destination[i]&mode=driving&language=en&sensor=false";
    $data = file_get_contents($url);
    $data = utf8_decode($data);
    $obj = json_decode($data);

    //echo($obj->rows[0]->elements[0]->distance->text); //km
    //echo($obj->rows[0]->elements[0]->distance->value); // meters  
    array_push($distance,"$obj->rows[0]->elements[0]->distance->text");
}
print_r($distance);
?>

以上代码在没有循环的情况下运行良好。

共有2个答案

陶星渊
2023-03-14

您需要使用算法中的代码来查找或选择一个点和一组点(多个节点)之间的最短路径,如本例所示。您可以遵循Dijkstra算法中描述的策略。您可以通过使用可比较的界面并比较可能的目的地集来找到最短的目的地。当您使用look选择最短的一个时,也会执行相同的操作。

这篇SO帖子可能会帮助你理解我想说的话。

林鸿飞
2023-03-14

DirectionsMatrix在一个请求中计算并返回多个结果。您可以发出一个请求来返回所有四个结果:

http://maps.googleapis.com/maps/api/distancematrix/json?origins=London

结果:

{
   "destination_addresses" : [
      "Manchester, UK",
      "Bristol, City of Bristol, UK",
      "Glasgow, Glasgow City, UK",
      "Liverpool, Merseyside, UK"
   ],
   "origin_addresses" : [ "London, UK" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "336 km",
                  "value" : 335756
               },
               "duration" : {
                  "text" : "3 hours 48 mins",
                  "value" : 13655
               },
               "status" : "OK"
            },
            {
               "distance" : {
                  "text" : "190 km",
                  "value" : 190196
               },
               "duration" : {
                  "text" : "2 hours 15 mins",
                  "value" : 8094
               },
               "status" : "OK"
            },
            {
               "distance" : {
                  "text" : "663 km",
                  "value" : 662591
               },
               "duration" : {
                  "text" : "6 hours 34 mins",
                  "value" : 23621
               },
               "status" : "OK"
            },
            {
               "distance" : {
                  "text" : "354 km",
                  "value" : 354422
               },
               "duration" : {
                  "text" : "3 hours 54 mins",
                  "value" : 14027
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}
 类似资料:
  • 我正在尝试使用JQuery在Ajax中向请求添加头。 以下是代码:- 然后我使用了要求(要求是chrome火狐插件,我们可以手动添加一个标题到请求)。 手动添加标题后:- 在这两个pics请求头中,“ACCESS-CONTROL-request-HEADERS”中都有x-auth-token,但第二个pic中有“x-auth-token”头和头值,而第一个pic中没有。 所以我的问题是如何使用JQ

  • 如何在< code>Jetpack Compose中添加边距? 我看到有一个< code >修饰符用于填充< code >修饰符。padding(...)但是我好像找不到一个作边距还是我瞎了? 有人指导我吗? 非常感谢。

  • 我画了一个正方形,它的宽度和长度是20x,或者20y,然后我在正方形里面画了一个圆,它的半径是10x。现在,一条来自圆心的射线以45度角穿过圆圈的边界(可以是38度或其他任何角度)。现在我如何从正方形中得到射线与圆的连接地的x&y距离? 我试过以下代码: 我没有用这段代码得到确切的距离,用什么方法得到x&y距离?

  • 问题内容: 我想在循环内添加延迟/睡眠: 我这样尝试过: 只有第一种情况是正确的:显示后,它将等待3秒钟,然后显示,但随后将不断重复。 我想要的是在显示3秒之后显示出来,然后它需要第二次等待3秒,依此类推。 问题答案: 该函数是非阻塞的,将立即返回。因此,您的循环将非常快速地迭代,并且将快速连续地发起3秒超时触发。这就是为什么您的第一个警报会在3秒钟后弹出,而其余所有警报都将连续不断地出现。 您可

  • 我已经在标题中添加了CORS,但我仍然在请求中得到CORS问题。在头中添加和处理CORS和其他请求的正确方法是什么? 以下是服务文件代码: 错误: 对preflight请求的响应未通过访问控制检查:请求的资源上没有“access-control-allow-origin”标头。因此,不允许访问源“http://localhost:4200” 失败:(未知url)的Http失败响应:0未知错误 在我

  • 问题内容: 我有一个尝试发送的HTTP GET请求。我尝试通过首先创建一个对象并将参数添加到该对象,然后调用我的对象,来将参数添加到此请求中。此方法失败。但是,如果我手动将参数添加到URL中(即append ),它将成功。 我知道我在这里缺少任何东西,任何帮助将不胜感激。 问题答案: 我使用NameValuePair和URLEncodedUtils列表创建所需的url字符串。