-1


検索条件の特定の場所までの距離によって検索結果をフィルタリングしようとしています。各提供は、(ドイツ語)郵便番号とその都市に属する独自の地位を持っています。検索条件にも同じ原則があります。

エンドでは、検索者の位置とオファーの複数の位置があります。

さらに、すべてのオファーには、操作可能な半径があります。
次に、サーチャーの位置までの距離が操作の半径よりも大きいすべてのオファーを除外します。私はこのPHP-コードを使用している

Google GetDistance機能が正常に動作しない

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

は私のURLのうち、検索者からの位置を取得します。

$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に私に各オファーの距離を表示することになっていると、これは機能である、私は2つのアドレス間の距離を取得するには、このフォーラムで見つかりました。

これはほとんどの時間で動作し、適切な距離を取得します(例:77.4640983104 km)。
しかし、すべての二、三のランは、私はこのエラーを取得する:

Notice: Trying to get property of non-object

と「地理データから緯度と経度を取得する」セクションおよび出力として0キロの間違った距離で

Notice: Undefined offset: 0



私は実際にどのような間違いをしているのか分かりませんが、誰かが私に説明することができ、何を変えなければならないか、全部が間違った方法でアプローチされることを願っています。

お疲れ様でした。

+0

'file_get_contents'がエラーに遭遇していないことを確認する必要があります。 – geocodezip

+0

これはエラーを削除しません。 –

答えて

0

注:GoogleのAPIキーはURLに追加された場合

機能は、作業を行います。 私が見つけた機能のようなものは、Mapsを使用する前からのものです。

関連する問題