使用PHP从邮政编码中获取经度和纬度

时间:2015-10-14 12:25:33

标签: php google-api

我有一个包含以下代码的PHP页面,用于从用户输入的邮政编码获取纬度和经度。

但是当我试图回应纬度和经度时,没有显示任何东西。

<?php
    function getLnt($zip){
    $url = "http://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($zip)."&sensor=false";
    $result_string = file_get_contents($url);
    $result = json_decode($result_string, true);
    return $result['results'][0]['geometry']['location'];
    }

    getLnt("750341");
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <?php
         $val = getLnt('90001');
         echo "Latitude: ".$val['lat']."<br>";
         echo "Longitude: ".$val['lng']."<br>";
        ?>
    </body>
</html>

5 个答案:

答案 0 :(得分:0)

我已经测试了您的代码并且完全,我的猜测是您已经exceeded your daily quota用于Google Places API网络服务。
快速解决方案是申请key at:

https://console.developers.google.com/

答案 1 :(得分:0)

我认为您的问题是API调用必须在HTTP上,所以将http更改为https

<?php
    function getLnt($zip){
    $url = "https://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($zip)."&sensor=false";
    $result_string = file_get_contents($url);
    $result = json_decode($result_string, true);
    return $result['results'][0]['geometry']['location'];
    }

    getLnt("750341");
?>

答案 2 :(得分:0)

请在api请求中添加关键参数。您需要使用Google API密钥替换的关键值。

new = []
a = [1,2,3]
    for i in range(len(a)):
    a.remove(a[0])
    new.append(a)
    print(a)
new
>> [2,3]
>> [3]
>> []

>> [[], [], []]

答案 3 :(得分:0)

    function getLnt($zip){
    $url = "https://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($zip)."&sensor=false&key=YOUR_KEY";
    $result_string = file_get_contents($url);
    $result = json_decode($result_string, true);
    return $result['results'][0]['geometry']['location'];
    }

  print_r(getLnt("462021"));

答案 4 :(得分:0)

不知道何时,但在2019年,我们可以使用components代替address以获得更准确的结果。 例如:国家/地区为美国,邮政编码为41000

$url = "https://maps.googleapis.com/maps/api/geocode/json?components=" . urlencode('country:US|postal_code:41000') . "&key=YOUR_API_KEY";