32,6 → 32,7 |
|
private $lat = null; |
private $lon = null; |
private $zone = null; |
|
public function __construct(Bdd $bdd) { |
$this->bdd = $bdd; |
42,6 → 43,7 |
$this->verifierParametres(); |
$this->lat = $this->parametres['lat']; |
$this->lon = $this->parametres['lon']; |
$this->zone = isset($this->parametres['zone']) ? $this->parametres['zone'] : null; |
|
$zoneTrouveeInfos = $this->localiserPointLatLon(); |
$corps = $this->formaterResultats($zoneTrouveeInfos); |
92,6 → 94,7 |
|
private function localiserPointLatLon() { |
$osmIdsInClause = $this->getOsmIdsDesCentresAProximites(); |
$zone = isset($this->zone) ? $this->bdd->proteger($this->zone) : null; |
|
$requete = 'SELECT id_zone_geo AS codeZoneGeo, intitule, code_iso_3166_1 AS codeIso31661, '. |
'code_iso_3166_2 AS codeIso31662, code_insee AS codeInsee, code_nuts as codeNuts, '. |
98,6 → 101,7 |
'nom_en AS nomEn, nom_es AS nomEs, wikipedia, niveau '. |
'FROM osm_zones_admin '. |
"WHERE st_within(GEOMFROMTEXT('POINT($this->lon $this->lat)'), polygone) = 1 ". |
(isset($zone) ? "AND zone = $zone " : ''). |
"AND osm_id IN ($osmIdsInClause) ". |
' -- '.__FILE__.' : '.__LINE__; |
$resultat = $this->bdd->recupererTous($requete); |
126,10 → 130,12 |
} |
|
private function construireRequeteUnion() { |
$zone = isset($this->zone) ? $this->bdd->proteger($this->zone) : null; |
$requeteTpl = 'SELECT osm_id, '. |
"(($this->lon - centre_lng) * ($this->lon -centre_lng) + ($this->lat - centre_lat) * ($this->lat - centre_lat)) AS distance ". |
'FROM osm_zones_admin '. |
'WHERE niveau = %s '. |
(isset($zone) ? "AND zone = $zone " : ''). |
'ORDER BY distance ASC '. |
"LIMIT %s "; |
$niveaux = array(2,3,4,5,6,7,8); |