显示纬度和长纬度的地址

时间:2017-10-14 08:20:11

标签: php latitude-longitude

我有查询这样显示latlong:

Latitude : <?=$post_search['lat'];?>
Long Latitude : <?=$post_search['long'];?>

样本结果:

Latitude : -7.966620399999998
Long Latitude : 112.63263210000002

如何创建一个函数来显示基于查询的地址:

<?=$post_search['lat'];?>
<?=$post_search['long'];?>

我的代码使用此库:see in pastebin

1 个答案:

答案 0 :(得分:0)

我不知道你的图书馆。但它只是没有任何库。 您应该使用googleapis地理编码。

这是简单的查询

http://maps.googleapis.com/maps/api/geocode/json?latlng=44.4647452,7.3553838&sensor=true

您需要在请求中设置lat lng并在请求解析json之后运行此命令。

php的例子:

const GOOGLE_MAPS_URL = 'http://maps.googleapis.com/maps/api/geocode/json';

function getUrlLatLng( $latLng) {
   $queryString =  http_build_query(['latlng' => $latLng,'sensor'=> true]);
   return GOOGLE_MAPS_URL . '?' .  $queryString;
}

function getData($lat, $lng) {
    $latLng = implode(',',[$lat, $lng]);
    $url = getUrlLatLng($latLng);
    return json_decode(file_get_contents($url)); 
}

function parseAddress($result) {

    return ($result[0]->formatted_address); //this parse address ass field you need;
}

function getAddress($lat, $lng) {
   $address = (array)@getData($lat, $lng);

   if(empty((array)@$address['results'])) {
     throw new Exception('Not result'); 
   }

   return $address['results'];
}

function getFullAddress($lat, $lng) {
   $address = getAddress($lat, $lng);
   return parseAddress($address);
}

$result = getFullAddress(-7.966620399999998, 112.63263210000002);

echo $result;