5

Web サイトに、ユーザーが場所の住所を入力するフォームがあります。彼らがフォームを送信すると、この場所を緯度/経度に変換し、MySQL データベースに保存します。この変換には Google の Geocode サービスを使用しています。問題は、その緯度/経度を住所に戻すクラスまたはサービスが見つからないことです。私の知る限り、Google の Geocode サービスは一方向の変換です。物理アドレスをデータベースに保存できることはわかっていますが、時間の経過とともに、より単純な形式で保存できるようになると、これは無駄なスペースになります。緯度/経度から住所に変換するクラス/サービスを知っている人はいますか?それとも私が間違っていて、Googleのジオコードシステムを使用できるのですか? 過去数日間、答えを探しましたが、何も見つかりませんでした。ご協力いただきありがとうございます!

4

4 に答える 4

12

地理座標を住所に変換することは、リバース ジオコーディングと呼ばれます。このスクリプトでは、無料で高速で、API キーが不要な Google マップ API を使用しています。

Google のジオコーディングのレート制限は、IP ごとに 1 日あたり 2500 API 呼び出しです。

Reveres Geocoding の PHP 関数

<?
  function getaddress($lat,$lng)
  {
     $url = 'https://maps.googleapis.com/maps/api/geocode/json?latlng='.trim($lat).','.trim($lng).'&sensor=false';
     $json = @file_get_contents($url);
     $data=json_decode($json);
     $status = $data->status;
     if($status=="OK")
     {
       return $data->results[0]->formatted_address;
     }
     else
     {
       return false;
     }
  }
?>

getaddress() 関数で緯度と経度を渡します。成功した場合はアドレス文字列を返し、それ以外の場合はブール値の false を返します。

<?php
  $lat= 26.754347; //latitude
  $lng= 81.001640; //longitude
  $address= getaddress($lat,$lng);
  if($address)
  {
    echo $address;
  }
  else
  {
    echo "Not found";
  }
?>
于 2016-01-06T07:04:54.787 に答える
8

Google (または他社) のリバース ジオコーディングサービスを探しています。

于 2012-10-10T01:30:57.450 に答える
2

Geolocation PHP は緯度経度を住所に変換します。まず、以下のリンクを使用して見つけた Google マップ API の API キーを取得する必要があります。

https://developers.google.com/maps/documentation/geocoding/start#ReverseGeocoding

以下の関数をヘルパークラスに入れて、緯度と経度を渡すだけの場所でその関数を呼び出します。緯度経度を渡した後、緯度経度値に関する住所を返します。そのプロセス全体がリバース ジオコーディングと呼ばれます。

/**
 * find address using lat long
 */
public static function geolocationaddress($lat, $long)
{
    $geocode = "https://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&sensor=false&key=AIzaSyCJyDp4TLGUigRfo4YN46dXcWOPRqLD0gQ";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $geocode);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $response = curl_exec($ch);
    curl_close($ch);
    $output = json_decode($response);
    $dataarray = get_object_vars($output);
    if ($dataarray['status'] != 'ZERO_RESULTS' && $dataarray['status'] != 'INVALID_REQUEST') {
        if (isset($dataarray['results'][0]->formatted_address)) {

            $address = $dataarray['results'][0]->formatted_address;

        } else {
            $address = 'Not Found';

        }
    } else {
        $address = 'Not Found';
    }

    return $address;
}

詳細については、以下のリンクをチェックアウトしてください: Geolocation PHP Latitude Longitude to Address - Lelocode

于 2018-12-06T03:39:14.857 に答える