想要使用 getCurrentPosition() 或类似的东西获取设备的 GPS 位置并将结果返回 PHP



我试图在加载网页时获取设备的位置,并将其传递给PHP中的两个变量(lat,long(,以便可以在脚本中进一步操作它。目前,我有tasker通过URL手动输入的数据,但我也希望在普通网页中使用它,而不必每次都手动将数据放入URL。

我试图使用 getCurrentPosition(( JavaScript 来做到这一点,但我找不到让它回到 PHP 的方法。我尝试编写两个单独的文件,但我似乎从文件中返回的只是JS脚本,因为它尚未处理该文件。所以不是实际数据本身。

PHP文件:

$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);  
ob_start();
$location = file_get_contents('https://myfakeurl.com/getlocation.php', false, stream_context_create($arrContextOptions));
$GPSCoord = explode(",", $location);
$coord['lat'] = trim($GPSCoord[0]);
$coord['long'] = trim($GPSCoord[1]);

echo "Longitude: " . $coord['long'] . "<br>";
echo "Lattitude: " . $coord['lat'] . "<br>";
?>

和 JS 文件:

<p id="coord"></p>
<script>
var x = document.getElementById("coord");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else { 
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
x.innerHTML = position.coords.latitude + "," + 
position.coords.longitude;
}
getLocation()
</script>

JS也需要在设备上运行,这是问题的一部分,否则您无法获得正确的GPS坐标

我怎样才能做到这一点?我觉得这是一个爱丽丝梦游仙境的兔子洞......

如果你使用 php 的 file_get_contents 函数,js 代码将无法运行,因为 javascript 是客户端语言。有必要从浏览器打开页面以运行javascript。您可以将javascript代码放在加载的网页上,捕获位置数据并使用ajax发送到php。尝试这样的事情

后端.php

<?php
if(isset($_POST['lng'], $_POST['lat'])) {
echo $_POST['lng'].':'.$_POST['lat'];
}
?>

前端.html

<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div id="response">
</div>
<script>
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(sendPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function sendPosition(position) {
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "http://fakeurl/backend.php", false);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("lng="+position.coords.longitude+"&lat="+position.coords.latitude); 
document.getElementById('response').innerHTML = xhttp.responseText;
}  
getLocation();
</script>
</body>
</html>

最新更新