Bonjour à tous
Récemment j'ai eu besoin de chercher tous les points (des lieux) proche de ma position, position qui en plus était nuancée par un périmètre. Par exemple tous les lieux dans les 5km autours de moi.
Pour ceci aucun problème, après quelques recherches et diverses modifs j'ai eu ma fonction.
Voici ma fonction actuelle qui marche à merveille :
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
23
24
25
26 $lat = $latMe; // Ma latitude $lon = $lonMe; // Ma longitude $rad = $distanceEvent; // La distance que je veux pour mon périmètre, par exemple 10km $R = 6371; // En rapport avec la Terre, pas tout compris mais ça marche $maxLat = $lat + rad2deg($rad/$R); $minLat = $lat - rad2deg($rad/$R); $maxlon = $lon + rad2deg(asin($rad/$R) / cos(deg2rad($lat))); $minlon = $lon - rad2deg(asin($rad/$R) / cos(deg2rad($lat))); $sql = "SELECT *, acos(sin(:lat)*sin(radians(lati)) + cos(:lat)*cos(radians(lati))*cos(radians(longi)-:lon)) * :R As D FROM ( SELECT * FROM event WHERE lati Between :minLat And :maxLat And longi Between :minlon And :maxlon ) As FirstCut WHERE acos(sin(:lat)*sin(radians(lati)) + cos(:lat)*cos(radians(lati))*cos(radians(longi)-:lon)) * :R < :rad ORDER by date"; $params = [ 'lat' => deg2rad($lat), 'lon' => deg2rad($lon), 'minLat' => $minLat, 'minlon' => $minlon, 'maxLat' => $maxLat, 'maxlon' => $maxlon, 'rad' => $rad, 'R' => $R, ];
Aujourd'hui j'ai besoin de plus complexe et je ne trouve pas...
J'ai besoin de trouver autours de moi, dans un périmètre donné, les personnes qui elle même ont stipulé un périmètre de "disponibilité".
Par exemple moi je dis que je peux me déplacer de ma position et dans les 10km autours et les gens disent la même chose, donc j'ai besoin de cherche autours de moi à 10km les points disponibles eux même dans un rayon de 10km.... Oui un peu compliqué à expliquer à l'écrit.
En gros schématiquement on aura mon cercle à moi et plein de cercles (les gens) et il faut que je trouve les gens dont le cercle passe dans le miens. (oui c'est l'explication maternelle)
Merci par avance !
Partager