php version is 5.6.36 Magi Apache server version 2.4.3Jet Postgresql version 9.5.1
read other people"s code, in theory, it will be no problem if it is deployed directly.
initially suspects that there is something wrong with the local php environment configuration, because the pg_query () function should return an array-like variable, but now it"s a string, and I don"t know why.
php rookie, contact with this project has not played php, recently bad repair, ask the boss to help take a look. Some gis knowledge is involved, and coordinates are returned.
return the link
http://127.0.0.1:8092/nl/php/getpanoid.php?request=getpanoid&x=495550.6342606045&y=306595.50317500636&distance=300&callback=showSWFSV
php Code
<?php
$curPath = dirname(__FILE__)."/";
include($curPath ."ir.php");
$dbObj = new PgPanoService2($dbHost, $dbName, $dbUser, $dbPassword, $dbPort);
$dbObj->initDb();
$dbObj->_requestParams = $_REQUEST;
if(isset($_REQUEST["y"]) && isset($_REQUEST["x"])){
$x = floatval($_REQUEST["x"]);
$y = floatval($_REQUEST["y"]);
$dist = isset($_REQUEST["distance"])? floatval($_REQUEST["distance"]) :300;
$dist = $dist < 40 ? 40:$dist;
$dbObj->getPanoIdByXY($x,$y,$dist);
}
else{
$dbObj->printOpRes(400, "missing parameter x or y!");
}
?>
function getPanoIdByXY($x, $y, $buffer=200,$printTag = true){
$panoId = "null";
$rlArr = $this->getRoadLinesByXY($x, $y, $buffer);
if($rlArr && count($rlArr) > 0){
$rlCount = count($rlArr);
for($i = 0; $i < $rlCount; $iPP){
$tmpRl = $rlArr[$i];
if($tmpRl){
$tmpPds = $tmpRl->getPdsByLimitDate($this->_limitDate);
//echo $tmpPds."\r\n";
if($tmpPds != ""){
$tableName = $this->getTableNameByPanoId($tmpPds, 0);
$tmpPanoId = $this->getPanoIdByXyAndTable($tableName, $x, $y, $buffer);
if($tmpPanoId != ""){
$panoId = $tmpPanoId;
break;
}
}
}
}
}
if($printTag){
$tmpResStr = "{"panoid":"".$panoId."","requestx":".$x.","requesty":".$y."}";
if($this->_requestParams && isset($this->_requestParams["callback"]) && $this->_requestParams["callback"] != ""){
$tmpResStr = $panoId;
}
$this->exportJson($tmpResStr);
}
else
return $panoId;
}
function getPanoIdByXyAndTable($tableName, $x, $y, $buffer=200){
$resStr = "";
if($this->_db){
$queryStr = "SELECT
a.name as name,
ST_Distance(ST_GeomFromText("POINT(".$x." ".$y.")", 900913), a.geom) as dist
FROM
".$tableName." as a
WHERE
ST_Contains(ST_Buffer(ST_GeomFromText("POINT(".$x." ".$y.")", 900913), ".$buffer."),a.geom)
order by dist ASC limit 1";
// var_dump($queryStr) ;exit;
$result = pg_query($this->_db,$queryStr);
var_dump($result);
if($result === FALSE || $result === TRUE || pg_num_rows($result) == 0){
return null;
}
else{
while($arr = pg_fetch_array($result)){
if($arr && $arr["name"] != ""){
$resStr = $arr["name"];
break;
}
}
}
}
return $resStr;
}