J'ai une base de données avec les coordonnées actuelles de chaque utilisateur en ligne. En appuyant sur un bouton, l'utilisateur peut mettre à jour ses coordonnées pour mettre à jour son emplacement actuel (qui est ensuite envoyé au serveur). L'application vous permettra de définir le rayon d'un cercle (où l'utilisateur est au centre) dans lequel vous pouvez voir les autres utilisateurs sur une carte. Les utilisateurs en dehors du cercle sont mis au rebut.Trouver des utilisateurs près de vous alors que les coordonnées de vous et des autres sont libres de changer
Quelle est la manière optimale de trouver les utilisateurs autour de vous?
1) La solution la plus simple est de trouver la distance entre vous et chaque utilisateur, puis de voir si elle est inférieure au rayon. Cela placerait le serveur sous une charge inutilement élevée, car il faut comparer avec tous les utilisateurs du monde. En outre, comment traiterait-on des changements dans les lieux?
2) Une façon améliorée serait de calculer et de comparer uniquement la distance avec d'autres utilisateurs ayant des latitude et longitude similaires. Encore une fois, afin d'être efficace, si le rayon est diminué, l'application ne doit cibler que les utilisateurs avec des coordonnées encore plus proches. Ce n'est pas si facile que ça en a l'air. Si l'on devait marcher autour du pôle Nord avec, disons, un rayon de 10 m, chaque pas autour de la circonférence équivaudrait à un changement de 9 degrés de longitude. Chaque étape le long de l'équateur serait marginale. Cependant, même en étant très rude et en supposant qu'il n'y a pas beaucoup d'utilisateurs visitant les Polonais, je pourrais le réduire dans une certaine mesure.
Toute idée de trouver des utilisateurs à proximité et comment les tenir à jour serait grandement appréciée! :)
Andres
Deux emplacements peuvent être spatialement très proches mais le géohash peut différer beaucoup (c'est génial pour des points plus éloignés). Par conséquent, il ne fournit pas beaucoup d'aide lorsque j'essaie de déterminer la proximité entre 2 points. Quelque chose comme Natural Area Code (NAC) est beaucoup mieux dans ce sens, mais il est sous un brevet :) Merci de m'indiquer dans la bonne direction, je vais essayer de lire plus demain;) – Andres