【问题标题】:Calculate Distance Between Two Postcodes In PHP在 PHP 中计算两个邮政编码之间的距离
【发布时间】:2014-06-09 07:31:54
【问题描述】:

我想计算印度两个邮政编码之间的距离。我找到了 Google Map API,并尝试将其与以下代码一起使用:

$url =
"http://maps.googleapis.com/maps/api/distancematrix/json?origins=144216&
destinations=160017&mode=driving&language=en-EN&sensor=false";
   $data   = @file_get_contents($url);
   $result = json_decode($data, true); //print_r($result);  //outputs the array    $distances = array( // converts the units
   "meters" => $result["rows"][0]["elements"][0]["distance"]["value"],
   "kilometers" => $result["rows"][0]["elements"][0]["distance"]["value"] / 1000,
   "yards" => $result["rows"][0]["elements"][0]["distance"]["value"] * 1.0936133,
   "miles" => $result["rows"][0]["elements"][0]["distance"]["value"] * 0.000621371    );        
print_r($distances);

它正在显示这个输出:

Array ( 
  [meters] => 5497949 
  [kilometers] => 5497.949 
  [yards] => 6012630.1491217 
  [miles] => 3416.266068079
)

由此产生的距离远大于应有的距离。这些地方之间的实际距离约为200公里。

我该怎么做才能使这项工作正常进行?

【问题讨论】:

  • 没有描述,只有代码?
  • 它显示输出数组([米] => 5497949 [公里] => 5497.949 [码] => 6012630.1491217 [英里] => 3416.266068079)。这是不正确的。请让我知道任何解决方案

标签: php google-maps-api-3


【解决方案1】:

如果您查看 google 的结果,您会注意到它正在计算从印度到俄罗斯的路线。

"destination_addresses" : [ "Wologda, Oblast Wologda, Russland, 160017" ],
"origin_addresses" : [ "Punjab 144216, Indien" ],

发生这种情况是因为您只提供了邮政编码,而没有说明它们来自哪个国家/地区。我假设您想计算印度境内的路线,因为您的个人资料显示您来自那里。

如果您只是将,india 添加到您的邮政编码中,如下所示:

http://maps.googleapis.com/maps/api/distancematrix/json?origins=144216,india&destinations=160017,india&mode=driving&language=en-EN&sensor=false

您会得到一个看起来更像您想要的结果:

{
   "destination_addresses" : [ "Chandigarh, 160017, India" ],
   "origin_addresses" : [ "Punjab 144216, India" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "201 km",
                  "value" : 200693
               },
               "duration" : {
                  "text" : "3 hours 30 mins",
                  "value" : 12625
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

【讨论】:

  • 谢谢。它对我真的很有帮助并且工作正常。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 2011-04-28
相关资源
最近更新 更多