Maison > Questions et réponses > le corps du texte
Il existe désormais un tableau enregistrant les coordonnées de l'utilisateur (à l'aide de l'API Baidu), avec deux champs enregistrés, tels que les coordonnées (116.307852, 40.057031).
Maintenant, que devons-nous faire pour connaître tous les utilisateurs dans un rayon de 1 km autour de cet utilisateur ?
Je pensais pouvoir y aller directement :
select *
from table
where x between 116.307852-1km and 116.307852+1km
and y between 40.057031-1km and 40.057031+1km
Je ne connais pas l'API de coordonnées, merci de m'avoir aidé à y jeter un œil.
Trouvez la distance entre deux points sur la carte Baidu
習慣沉默2017-05-25 15:10:24
Si votre base de données est MySQL 5.7, vous pouvez utiliser la fonction spatiale : ST_Distance_Sphere() pour calculer la distance la plus courte (unité : mètres) entre deux points sur la terre.
Comme suit :
SELECT ST_Distance_Sphere(POINT(lat,lng), POINT(116.307852,40.057031)) as distance
FROM table
where distance < 1000
MySQL version 5.6 peut utiliser ST_Distance() pour calculer la distance. Il convient de noter qu'il calcule la distance en ligne droite entre deux points de coordonnées bidimensionnelles et que le résultat doit être multiplié par 111195 (rayon de la terre 6371000*PI/180) pour convertir la valeur en mètres.