-1


我想过滤搜索结果的距离,以搜索条件中给定的位置。每个优惠都有自己的位置,包括(德语)邮政编码和属于它的城市。搜索条件包含相同的原理。

因此,最后,搜索者的位置以及优惠的多个位置。

另外,所有报价都有一个半径,他们可以在其中运行。
然后,我想筛选出所有与搜索者位置距离更远的商品,而不是他们的操作半径。

我已经使用这个PHP-代码:谷歌GetDistance函数无法正常工作

$position = $_GET['position']!='' ? $_GET['position'] : ''; 

为了从搜索位置我的网址。

$Results = $database->SearchResults('Conditions of the database Query'); 

它从URL中的信息构建一个查询并搜索我的数据库。

while ($row = mysqli_fetch_array($Results)) { 
    echo $functions->GetDistance($position, $row[1], "K")."<br>"; 
} 

这个while循环应该是每个报价的距离,让我给搜索

function getDistance($addressFrom, $addressTo, $unit){ 
     //Change address format 
     $formattedAddrFrom = str_replace(' ','+',$addressFrom); 
     $formattedAddrTo = str_replace(' ','+',$addressTo); 

     //Send request and receive json data 
     $geocodeFrom = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$formattedAddrFrom.'&sensor=false'); 
     $outputFrom = json_decode($geocodeFrom); 
     $geocodeTo = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$formattedAddrTo.'&sensor=false'); 
     $outputTo = json_decode($geocodeTo); 

     //Get latitude and longitude from geo data 
     $latitudeFrom = $outputFrom->results[0]->geometry->location->lat; 
     $longitudeFrom = $outputFrom->results[0]->geometry->location->lng; 
     $latitudeTo = $outputTo->results[0]->geometry->location->lat; 
     $longitudeTo = $outputTo->results[0]->geometry->location->lng; 

     //Calculate distance from latitude and longitude 
     $theta = $longitudeFrom - $longitudeTo; 
     $dist = sin(deg2rad($latitudeFrom)) * sin(deg2rad($latitudeTo)) + cos(deg2rad($latitudeFrom)) * cos(deg2rad($latitudeTo)) * cos(deg2rad($theta)); 
     $dist = acos($dist); 
     $dist = rad2deg($dist); 
     $miles = $dist * 60 * 1.1515; 
     $unit = strtoupper($unit); 
     if ($unit == "K") { 
      return ($miles * 1.609344).' km'; 
     } 
     else if ($unit == "N") { 
      return ($miles * 0.8684).' nm'; 
     } 
     else { 
      return $miles.' mi'; 
     } 
    } 

的postition这是函数,我在这个论坛上获得两个地址之间的距离发现。

它在大多数时间都有效,我可以获得正确的距离,例如:77.4640983104公里。
但每隔两三奔跑,我得到这个错误:

Notice: Trying to get property of non-object

Notice: Undefined offset: 0

“获取从地理数据的纬度和经度”部分和错误的距离为0 km,也输出在。

我真的不知道自己在做什么错误,但我希望有人能向我解释,应该改变什么,或者是否以错误的方式接近整个事情。

非常感谢您提前,祝您有美好的一天!

+0

您需要验证'file_get_contents'没有遇到错误。 – geocodezip

+0

这不会删除错误。 –

回答

0

注:

功能不工作,如果谷歌API密钥被添加到URL。 看起来像我发现的功能是从使用地图获得商业化之前的时间。