X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/41fce277cd75f866365d4fc64fdbd16fa10e25ac..5141ac14f6c8502aee8a88074159a68222054527:/lib/NearPoint.php?ds=sidebyside diff --git a/lib/NearPoint.php b/lib/NearPoint.php index 836e017c..e8d595cc 100644 --- a/lib/NearPoint.php +++ b/lib/NearPoint.php @@ -13,6 +13,7 @@ class NearPoint private $sSQL; + public function __construct($lat, $lon, $radius = 0.1) { $this->fLat = (float)$lat; @@ -21,19 +22,35 @@ class NearPoint $this->sSQL = 'ST_SetSRID(ST_Point('.$this->fLon.','.$this->fLat.'),4326)'; } - public function lat() { return $this->fLat; } + public function lat() + { + return $this->fLat; + } - public function lon() { return $this->fLon; } + public function lon() + { + return $this->fLon; + } - public function radius() { return $this->fRadius; } + public function radius() + { + return $this->fRadius; + } public function distanceSQL($sObj) { return 'ST_Distance('.$this->sSQL.", $sObj)"; } + public function withinSQL($sObj) + { + return sprintf('ST_DWithin(%s, %s, %F)', $sObj, $this->sSQL, $this->fRadius); + } + /** * Check that the coordinates are valid WSG84 coordinates. + * + * @return bool True if the coordinates are correctly bounded. */ public function isValid() { @@ -48,6 +65,12 @@ class NearPoint * * If a coordinate is found an array of a new NearPoint and the * remaining query is returned or false otherwise. + * + * @param string $sQuery Query to scan. + * + * @return array|false If a coordinate was found, an array with + * `pt` as the NearPoint coordinates and `query` + * with the remaining query string. False otherwiese. */ public static function extractFromQuery($sQuery) { @@ -120,16 +143,15 @@ class NearPoint $fQueryLat = $aData[2]; $fQueryLon = $aData[3]; } else { - return False; + return false; } $oPt = new NearPoint($fQueryLat, $fQueryLon); - if (!$oPt->isValid()) return False; + if (!$oPt->isValid()) return false; $sQuery = trim(str_replace($sFound, ' ', $sQuery)); return array('pt' => $oPt, 'query' => $sQuery); } - }