在PHP中使用Geolocation

时间:2015-10-26 05:39:33

标签: php api geolocation

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

但是当我尝试运行它时,我收到以下错误:

  

警告:在文件中禁用了file_get_contents():https://包装器   服务器配置by allow_url_fopen = 0 in   第4行/home/metsrobo/public_html/PHPPage2.php

     

警告:   的file_get_contents(https://maps.googleapis.com/maps/api/geocode/json?address=750341&sensor=false&key=AIzaSyDa3Jhr3c5x_2GWrPwRoMWDXrMSYl3KvOA):   无法打开流:第4行找不到合适的包装。

<?php
    function getLnt($zip){
    $url = "https://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($zip)."&sensor=false&key=AIzaSyDa3Jhr3c5x_2GWrPwRoMWDXrMSYl3KvOA";
    $result_string = file_get_contents($url);
    $result = json_decode($result_string, true);
    return $result['results'][0]['geometry']['location'];
    }
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <?php
         $val = getLnt('750341');
         echo "Latitude: ".$val['lat']."<br>";
         echo "Longitude: ".$val['lng']."<br>";
        ?>
    </body>
</html>

2 个答案:

答案 0 :(得分:4)

不要在网址上使用api密钥,删除api密钥然后它会起作用,因为要获得经度和经度,你不需要api密钥。更改网址如下

https://maps.googleapis.com/maps/api/geocode/json?address=750341&sensor=false

答案 1 :(得分:0)

要使file_get_contents()功能正常工作,首先需要启用allow_url_fopen并将其值设置为开。

关于同样的事情,你可以尝试两件事。

  1. 创建一个.htaccess文件并将其保存在根文件夹中(有时可能需要将其放在根目录后面一步)并将此代码粘贴到那里。

    php_value allow_url_fopen On
    
  2. 创建php.ini文件(对于更新服务器php5.ini)并将其保存在根文件夹中(有时可能需要将其放在根目录后面一步)并粘贴以下内容代码那里:

    allow_url_fopen = On;
    
  3. 希望它对你有所帮助。