2016-05-02 3 views
1

私は脳の不調のためにすべてを犯したと思う。マップの距離が間違っている

私は "phpsqlsearch_v3" のGoogleの例を踏襲:

phpsqlsearch_genxml.php?lat=37.315903&lng=-121.977928&radius=40 

  • はキロにこれを使用して
  • テストをマイルを示すから

  • 変更クエリをSQLファイルをインポート

    すべてが魅力として...

    enter image description here

    ...私はphpsqlsearch_genxml.phpに....

    phpsqlsearch_genxml.php?lat=59.627847&lng=17.838589&radius=40 
    

    を変更しています、今は何もデシベル でいくつかのデータを追加することなく、変更、LatLongブログを取得するためにウェブサイトに行きます.. 。しかし、私は8000に半径を変更した場合、それは動作しますが、私は地球の右側点滅点滅上だから、私は入力を反転する場合は、入力の周りの場所のための距離は5665.231121242624キロようなことはなくなります

    phpsqlsearch_genxml.php?lat=17.838589&lng=59.627847&radius=100 
    

    それは私に、より正確な結果を与えるであろう、しかし...結果は今、何をするに近いと

    提案... 1〜2キロの周りにすべきか?

答えて

0
function getAddress($lat, $lng) { 
    $use_curl = false; 
     if ($use_curl) { 
      $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_URL, "http://maps.googleapis.com/maps/api/geocode/json?latlng=" . $lat . "," . $lng . "&sensor=true"); 
      curl_setopt($ch, CURLOPT_HEADER, true); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
      curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
      curl_setopt($ch, CURLOPT_HTTPHEADER, Array (
      "Content-type: application/binary" 
      )); 
      curl_setopt($ch, CURLOPT_POST, 1); 
      $response = curl_exec($ch); 
      if (curl_errno($ch)) 
      return -1; 
      $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); 
      $str = substr($response, $header_size); 
      curl_close($ch); 
      $data = json_decode($str, true); 
      if (isset($data["results"]) && is_array($data["results"])) { 
      $street = $data["results"][0]["formatted_address"]; 
      $ac = $data["results"][0]["address_components"]; 
      $len = count($ac); 
      $i = 0; 
      $city = ""; 
      while ($i<$len) { 
      if (in_array("locality", $ac[$i]["types"])) $city = $ac[$i]["long_name"]; 
      else if (in_array("country", $ac[$i]["types"])) $city .= ",".$ac[$i]["short_name"]; 
      $i++; 
      } 
      $meta = array(
      "status"=>200, 
      "message"=>"Succeed." 
      ); 
      return array("meta"=>$meta, "response"=>array("address"=>$street, "city"=>$city)); 
      } else { 
      $meta = array(
      "status"=>406, 
      "message"=>"Address is not known." 
      ); 
      return array("meta", $meta); 
      } 
      } else { 
      $str = @file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?latlng=" . $lat . "," . $lng . "&sensor=true"); 
      $data = json_decode($str, true); 
      if (isset($data["results"]) && is_array($data["results"])) { 
      $street = $data["results"][0]["formatted_address"]; 
      $ac = $data["results"][0]["address_components"]; 
      $len = count($ac); 
      $i = 0; 
      $city = ""; 
      while ($i<$len) { 
      if (in_array("locality", $ac[$i]["types"])) $city = $ac[$i]["long_name"]; 
      else if (in_array("country", $ac[$i]["types"])) $city .= ",".$ac[$i]["short_name"]; 
      $i++; 
      } 
      $meta = array(
      "status"=>200, 
      "message"=>"Succeed." 
      ); 
      return array("meta"=>$meta, "response"=>array("address"=>$street, "city"=>$city)); 
      } else { 
      $meta = array(
      "status"=>406, 
      "message"=>"Address is not known." 
      ); 
      return array("meta"=>$meta); 
     } 
    } 
} 
関連する問題