Bonjour,
Je dois corriger une anomalie sur un site qui référence de bonne adresse et qui utilise l'api Google Maps.
La requête, que je dois corriger, doit remonter des lieux enregistrés en base en fonction d'une latitude et longitude minimum et maximum.
Voici :
Cette requete ne remonte rien mais si je fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 // Récupération des extrémités de la carte courante $lng_max = max($request->getParameter('lng1'), $request->getParameter('lng2')); $lng_min = min($request->getParameter('lng1'), $request->getParameter('lng2')); $lat_max = max($request->getParameter('lat1'), $request->getParameter('lat2')); $lat_min = min($request->getParameter('lat1'), $request->getParameter('lat2')); $c = new Criteria(); $longitudeCriterion = $c->getNewCriterion(PlacePeer::GPS_Y, (float)$lat_min, Criteria::GREATER_THAN); $longitudeCriterion->addAnd($c->getNewCriterion(PlacePeer::GPS_Y, (float)$lat_max, Criteria::LESS_THAN)); $latitudeCriterion = $c->getNewCriterion(PlacePeer::GPS_X, (float)$lng_min, Criteria::GREATER_THAN); $latitudeCriterion->addAnd($c->getNewCriterion(PlacePeer::GPS_X, (float)$lng_max, Criteria::LESS_THAN)); $c->add($longitudeCriterion); $c->add($latitudeCriterion); $c->addAscendingOrderByColumn('rand()'); $c->setLimit('200'); $places = PlacePeer::doSelect($c);
j'ai la chose suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 echo $c->toString();exit;
En reprenant la requete et en l'adaptant dans mon phpMyAdmin, je fais ceci pour m'assurer que la requête est bien censé me remonter des informations :Criteria: SQL (may not be complete): SELECT FROM `place` WHERE (place.GPS_Y>:p1 AND place.GPS_Y<:p2) AND (place.GPS_X>:p3 AND place.GPS_X<:p4) ORDER BY rand() ASC LIMIT 200 Params: place.GPS_Y => 46.8846002499, place.GPS_Y => 47.5468715989, place.GPS_X => -2.51586914062, place.GPS_X => -0.554809570312
J'ai des résultats sur l'interface phpMyAdmin mais pas sur mon application ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT * FROM `place` WHERE (place.GPS_Y> 46.8846002499 AND place.GPS_Y< 47.5468715989) AND (place.GPS_X> -2.51586914062 AND place.GPS_X< -0.554809570312)
Pour les coordonnées géographiques, je suis sur de moi pour le format, c'est à dire, l'utilisation du point et non de la virgule pour les décimales et sans mettre de double ou simple cote.
Merci pour votre aide.
Partager