0

我有一个 PHP 脚本,它使用 Google Maps API 和 JavaScript 地理定位系统计算距离。

我想在我的 PHP 代码中获取当前用户的坐标,例如:

$user_location = array(latitude, longitude);

截至目前,我正在尝试这样的事情:

位置.php:

$contents = file_get_contents('user_loc.html');
if ($contents != "false") {
    $user_location = explode(',', $contents);
}
// Do stuff with coordinates

user_loc.html:

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript">
            navigator.geolocation.getCurrentPosition(
                function (position) {
                    console.log(position.coords.latitude);
                    document.write(position.coords.latitude + ',' + position.coords.longitude);
                }, 
                function (error) {
                    document.write("false");
                }, 
                {
                    timeout: (5 * 1000),
                    maximumAge: (1000 * 60 * 15),
                    enableHighAccuracy: true
                }
            );
        </script>
    </head>

    <body>
    </body>
</html>

我很确定这不是最好的方法。有什么建议么?

4

1 回答 1

0

该函数document.write只是一个临时的 DOM 操作,不会保存在您的文件中。正确的顺序是运行 html 文件,使用 javascript 确定坐标,然后将它们发送到托管您的 php 文件的服务器(例如通过 AJAX)。

jQuery AJAX 示例:

// your code above ...
$.post("location.php", { lat: latitude, lon: longitude }, function(data) {
    console.log(data);
});

在服务器端 location.php 上,您现在可以打印从 html 收到的数据:

print_r($_POST);

这称为异步请求。手动打开 location.php 文件时,您不会获得任何数据,因为您没有传递任何数据。因此,当 html 文件被执行时,它使用 javascript 来确定该数据,现在您得到它并且只想将其发送到服务器。为了获得服务器响应,我使用服务器响应实现了一个回调函数,console.log以便您检查结果。

于 2013-10-24T18:54:38.423 回答