使用gps坐标查找当前位置的距离

时间:2014-07-16 22:30:36

标签: php html gps

我试图找出特定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;
?>

2 个答案:

答案 0 :(得分:0)

从我记忆中你需要xmlhttp.open,第二个参数为false(这将导致脚本暂停并等待响应)。然后你需要从java编写xmlhttp.responseText,xmlhttp.repsonseText应该包含php脚本的输出。

答案 1 :(得分:0)

所以这不是关于GPS距离计算的问题 - 它更多是关于基本的PHP基础知识。

在PHP脚本中,$ answer是一个数组。您不能简单地回显数组,因为您可以使用字符串或整数。

也许你应该发送JSON编码的响应:

echo json_encode($answer);