Dans les applications sociales modernes, trouver des utilisateurs à proximité est devenu une caractéristique commune et importante. Qu'il s'agisse de rencontres, de groupes d'intérêt ou de recommandations de services locaux, cette fonction peut améliorer l'expérience utilisateur. Cet article présentera comment utiliser PHP combiné à la technologie frontale pour obtenir un processus complet de recherche des utilisateurs à proximité.
Afin de trouver des utilisateurs à proximité, vous devez d'abord obtenir l'emplacement géographique du visiteur. L'API Geolocation de HTML5 fournit un moyen d'obtenir des informations de latitude et de longitude dans un navigateur, qui est déjà pris en charge par la plupart des navigateurs modernes.
Avant d'appeler la fonction de positionnement, il est recommandé de déterminer si le navigateur prend en charge l'API:
if (navigator.geolocation) {
// Soutenir l'emplacement géographiqueAPI
} else {
// 不Soutenir l'emplacement géographiqueAPI
}
Après avoir confirmé l'assistance, vous pouvez appeler l'API pour obtenir l'emplacement de l'utilisateur.
Les informations de latitude et de longitude peuvent être obtenues via le code suivant:
navigator.geolocation.getCurrentPosition(function(position) {
var latitude = position.coords.latitude; // latitude
var longitude = position.coords.longitude; // longitude
// 发送经latitude到后端处理
// sendLocationToServer(latitude, longitude);
});
Après avoir obtenu l'emplacement de l'utilisateur, il doit être stocké dans la base de données pour les requêtes suivantes. Il est recommandé d'utiliser la base de données MySQL pour la gestion.
Créez d'abord un tableau appelé utilisateurs :
CREATE DATABASE nearby;
USE nearby;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
latitude DOUBLE,
longitude DOUBLE
);
Ce qui suit est un exemple de code PHP qui stocke les informations de localisation de l'utilisateur dans la base de données:
<?php
// Connectez-vous à la base de données
$conn = new PDO("mysql:host=localhost;dbname=nearby", "root", "");
// 获取经latitude
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
// Insérer la base de données
$sql = "INSERT INTO users (latitude, longitude) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->execute([$latitude, $longitude]);
echo "Les informations de localisation sont enregistrées avec succès!";
?>
Une fois les emplacements de plusieurs utilisateurs stockés, d'autres personnes proches de l'utilisateur actuel peuvent être trouvées en calculant les distances. Les deux méthodes de calcul de distance suivantes sont introduites.
La distance euclidienne convient aux modèles simplifiés et est calculé comme suit:
distance = sqrt((x2 - x1)^2 + (y2 - y1)^2)
Convient pour des scènes aux proportions de cartes plus petites.
La formule Haversine est plus adaptée au calcul de la distance des coordonnées de la surface de la Terre:
distance = 2 * r * asin(sqrt(
sin((lat2 - lat1) / 2)^2 +
cos(lat1) * cos(lat2) * sin((lng2 - lng1) / 2)^2
))
où r est le rayon de la terre, généralement 6371 kilomètres.
Grâce aux étapes ci-dessus, nous pouvons implémenter une fonction basée sur PHP pour trouver des personnes voisines. Du positionnement côté navigateur, au stockage côté serveur, aux utilisateurs de filtrage basés sur des algorithmes, l'ensemble du processus convient à divers scénarios tels que les plateformes sociales, les recommandations d'événements, les services de localisation, etc. Dans les projets réels, la mise en cache et le géo-index peuvent également être combinées avec l'optimisation des performances pour améliorer l'expérience utilisateur.