You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

80 lines
2.8 KiB

<?php
/**
* 尋找最近的作番地點
* @url /app-browser_gpslocation-find.php
* @method POST
* @return JSON
*
* request
* {
* "lat" 緯度
* "lng" 經度
* }
*
* respons json
* {
* "st" : "ok",
* "err" : ""
* }
**/
$data = [];
$rarr = array('st' => 'ok', 'err' => '');
try {
error_log("api start 1\n",3,"gps.log");
error_log("POST=".print_r($_POST,1)."\n",3,"gps.log");
if (empty($_POST) || empty($_POST["lat"]) || empty($_POST["lng"])) throw new \Exception("parameter empty");
foreach ($_POST as $k => $v) {
$$k = htmlspecialchars(stripslashes(trim($v)));
}
error_log("api start 2\n",3,"gps.log");
require_once "db/database.php";
/* Method.1
define("EARTH_RADIUS", 6371); //地球半徑,平均半徑為6371km
/**
* 計算某個經緯度的周圍某段距離的正方形的四個點
* @param lng float 經度
* @param lat float 緯度
* @param distance float 該點所在圓的半徑,該圓與此正方形內切,默認值為1公里
* @return array 正方形的四個點的經緯度坐標
*/
/*
function returnSquarePoint($lng, $lat, $distance = 5) {
$dlng = 2*asin(sin($distance/(2*EARTH_RADIUS))/cos(deg2rad($lat)));
$dlng = rad2deg($dlng);
$dlat = $distance/EARTH_RADIUS;
$dlat = rad2deg($dlat);
return array("left-top" => array("lat" => $lat+$dlat, "lng" => $lng-$dlng),
"right-top" => array("lat" => $lat+$dlat, "lng" => $lng+$dlng),
"left-bottom" => array("lat" => $lat-$dlat, "lng" => $lng-$dlng),
"right-bottom" => array("lat" => $lat-$dlat, "lng" => $lng+$dlng));
}
$squares = returnSquarePoint($lng, $lat);
$sql = "select address from facility ";
$sql .= "where latitude > '".$squares["right-bottom"]["lat"]."' and latitude < '".$squares["left-top"]["lat"]."'";
$sql .= "and longitude > '".$squares["left-top"]["lng"]."' and longitude < '".$squares["right-bottom"]["lng"]."' ";
$sql .= "group by address";
*/
/* Method.2 */
//$latitude = substr($lat, 0, strpos($lat, ".")).substr($lat, strpos($lat, "."), 4);
$latitude = substr($lat, 0, 6);
//$longitude = substr($lng, 0, strpos($lng, ".")).substr($lng, strpos($lng, "."), 4);
$longitude = substr($lng, 0, 7);
$sql = "select address from facility where latitude like '".$latitude."%' and longitude like '".$longitude."%'";
error_log($sql."\n",3,"gps.log");
$res = mysqli_query($link, $sql);
while ($row = mysqli_fetch_row($res)) {
$data[] = $row[0];
}
mysqli_free_result($res);
error_log("data=".print_r($data,1)."\n",3,"gps.log");
$rarr['content'] = $data;
}catch(\Exception $e) {
$rarr['st'] = 'err';
$rarr['err'] = $e->getMessage();
}
echo json_encode($rarr, JSON_UNESCAPED_UNICODE);
?>