我试图找出特定gps点与当前位置的距离。所以我有一个HTML文件来计算和显示当前位置。然后通过GET消息将坐标发送到服务器。服务器中的php文件具有计算距离的功能。但是,php文件中没有显示echo
。这是我的实施:
HTML文件
<!DOCTYPE HTML>
<html>
<head>
<script>
var lat;
var lng;
function clicked(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(success,error);
}
else{
document.getElementById("hello").innerHTML = "Not supported";
}
function success(position){
lat = position.coords.latitude;
lng = position.coords.longitude;
document.getElementById("hello").innerHTML = "lat :"+lat+"<br>long :"+lng;
}
function error(err){
document.getElementById("hello").innerHTML = "Error Code: "+error.code;
if(err.code == 1){
document.getElementById("hello").innerHTML = "Access denied";
}
if(err.code == 2){
document.getElementById("hello").innerHTML = "Position unavailable";
}
}
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("list").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","queryRestaurantsList.php?lat="+lat+"&lng="+lng,true);
xmlhttp.send();
}
</script>
</head>
<body>
<div onclick="clicked()">Click Me!</div>
<div id="hello"></div>
<div id="list"></div>
</body>
</html>
PHP文件
<?
mysql_connect($host,$username,$password);
mysql_select_db($database) or die( "Unable to select database");
echo "HEllo WOrld!";
function distance($lat1,$lng1,$lat2,$lng2,$unit){
$theta = $lng1 - $lng2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == "M") {
return (($miles * 1.609344)/1000);
}
}
//Check if POST array is empty or not
$lat1 = $_GET['lat'];
$lng1 = $_GET['lng'];
echo $lat1;
echo $lng1;
$query = "SELECT RestaurantID,Latitude,Longitude FROM RGeoLocation"
$result = mysql_query($query) or die("Unable to execute query");
$i = 0;
$answer = array();
while ($row = mysql_fetch_array($result)){
$lat2 = row['Latitude'];
$lng2 = row['Longitude'];
$id = row['RestaurantID'];
$answer[$i] = distance($lat1,$lng1,$lat2,$lng2,"M")
$i++;
}
echo $answer;
?>
答案 0 :(得分:0)
从我记忆中你需要xmlhttp.open,第二个参数为false(这将导致脚本暂停并等待响应)。然后你需要从java编写xmlhttp.responseText,xmlhttp.repsonseText应该包含php脚本的输出。
答案 1 :(得分:0)
所以这不是关于GPS距离计算的问题 - 它更多是关于基本的PHP基础知识。
在PHP脚本中,$ answer是一个数组。您不能简单地回显数组,因为您可以使用字符串或整数。
也许你应该发送JSON编码的响应:
echo json_encode($answer);