現代のソーシャルアプリケーションでは、近くのユーザーを見つけることが一般的で重要な機能になりました。デート、利益団体、地元のサービスの推奨であっても、この機能はユーザーエクスペリエンスを改善できます。この記事では、PHPを使用してフロントエンドテクノロジーを組み合わせて、近くのユーザーを見つける完全なプロセスを実現する方法を紹介します。
近くのユーザーを見つけるには、最初に訪問者の地理的位置を取得する必要があります。 HTML5のGeolocation 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 "位置情報は正常に保存されます!";
?>
複数のユーザーの場所が保存されると、距離を計算することで、現在のユーザーに近い他の人を見つけることができます。次の2つの距離計算方法が導入されています。
ユークリッド距離は単純化されたモデルに適しており、次のように計算されます。
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は地球の半径、通常は6371キロメートルです。
上記の手順を通じて、近くの人々を見つけるというPHPベースの機能を実装できます。ブラウザ側のポジショニング、サーバー側のストレージ、アルゴリズムベースのフィルタリングユーザーまで、プロセス全体は、ソーシャルプラットフォーム、イベントの推奨事項、ロケーションサービスなどのさまざまなシナリオに適しています。実際のプロジェクトでは、キャッシュとジオインデックスをパフォーマンスの最適化と組み合わせて、ユーザーエクスペリエンスを向上させることもできます。