현대적인 소셜 애플리케이션에서는 근처의 사용자를 찾는 것이 일반적이고 중요한 기능이되었습니다. 데이트, 관심 그룹 또는 지역 서비스 권장 사항에 관계 없이이 기능은 사용자 경험을 향상시킬 수 있습니다. 이 기사는 프론트 엔드 기술과 결합 된 PHP를 사용하여 인근 사용자를 찾는 완벽한 프로세스를 달성하는 방법을 소개합니다.
근처 사용자를 찾으려면 먼저 방문자의 지리적 위치를 얻어야합니다. HTML5의 지리적 위치 API는 브라우저에서 위도 및 경도 정보를 얻을 수있는 방법을 제공하며, 대부분의 최신 브라우저에서 이미 지원됩니다.
포지셔닝 기능을 호출하기 전에 브라우저가 API를 지원하는지 여부를 결정하는 것이 좋습니다.
if (navigator.geolocation) {
// 지리적 위치를 지원합니다API
} else {
// 不지리적 위치를 지원합니다API
}
지원을 확인한 후 API에 전화하여 사용자의 위치를 얻을 수 있습니다.
위도 및 경도 정보는 다음 코드를 통해 얻을 수 있습니다.
navigator.geolocation.getCurrentPosition(function(position) {
var latitude = position.coords.latitude; // 위도
var longitude = position.coords.longitude; // 경도
// 发送经위도到后端处理
// sendLocationToServer(latitude, longitude);
});
사용자의 위치를 얻은 후에는 후속 쿼리를 위해 데이터베이스에 저장해야합니다. 관리에 MySQL 데이터베이스를 사용하는 것이 좋습니다.
먼저 사용자 라는 테이블을 만듭니다.
CREATE DATABASE nearby;
USE nearby;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
latitude DOUBLE,
longitude DOUBLE
);
다음은 사용자 위치 정보를 데이터베이스에 저장하는 PHP 코드 예제입니다.
<?php
// 데이터베이스에 연결하십시오
$conn = new PDO("mysql:host=localhost;dbname=nearby", "root", "");
// 获取经위도
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
// 데이터베이스를 삽입하십시오
$sql = "INSERT INTO users (latitude, longitude) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->execute([$latitude, $longitude]);
echo "위치 정보가 성공적으로 저장됩니다!";
?>
여러 사용자의 위치가 저장되면 거리를 계산하여 현재 사용자와 가까운 다른 사람을 찾을 수 있습니다. 다음 두 가지 거리 계산 방법이 도입됩니다.
유클리드 거리는 단순화 된 모델에 적합하며 다음과 같이 계산됩니다.
distance = sqrt((x2 - x1)^2 + (y2 - y1)^2)
맵 비율이 작은 장면에 적합합니다.
Haversine 공식은 지구 표면의 좌표의 거리 계산에 더 적합합니다.
distance = 2 * r * asin(sqrt(
sin((lat2 - lat1) / 2)^2 +
cos(lat1) * cos(lat2) * sin((lng2 - lng1) / 2)^2
))
여기서 r 은 지구의 반경, 보통 6371km입니다.
위의 단계를 통해 근처 사람들을 찾는 PHP 기반 기능을 구현할 수 있습니다. 브라우저 측 포지셔닝, 서버 측 스토리지, 알고리즘 기반 필터링 사용자에 이르기까지 전체 프로세스는 소셜 플랫폼, 이벤트 권장 사항, 위치 서비스 등과 같은 다양한 시나리오에 적합합니다. 실제 프로젝트에서 캐싱 및 지구 인덱스는 성능의 최적화와 결합하여 사용자 경험을 향상시킬 수 있습니다.