現在の緯度/経度の近くにあるリストを取得しようとしています。現在のLatitude/LongituteにMySQL SELECT ASを使用
MySQLの地理空間POINTを無駄にしようとしたため、各レコードのDECIMAL緯度/経度値を使用して戻りました。
以下の機能は、10km以内のリストを取得するためのものです(this formulaに基づいています)SELECTが正しくないとわかりましたが、(ACOS ... 1.1515)を距離その後、他の列を選択します。
// functions.php
function getDeals($type_of_deal) {
$current_lat = -37.905;
$current_lon = 175.505
$result = mysql_query("
SELECT i, company,
TIME_FORMAT(valid_time_start, '%l:%i %p'),
TIME_FORMAT(valid_time_end, '%l:%i %p'),
DATE_FORMAT(valid_expiry, '%D %b %y'),
((ACOS(SIN("$current_lat" * PI()/180) * SIN(`company_lat` * PI()/180) +
COS("$current_lat" * PI()/180) * COS(`company_lat` * PI()/180) *
COS(("$current_lon" – `company_lon`) * PI()/180)) * 180/PI()) * 60 * 1.1515)
AS distance
FROM listings
WHERE deal_type = '" .$type_of_deal. "'
HAVING distance<=’10′
ORDER BY `distance` ASC
");
return $result;
// location.php
$type_of_deal = food;
$result = getDeals($type_of_deal);
if (mysql_num_rows($result)) {
while($row = mysql_fetch_array($result)) {
echo $row["deal_title"];
}
}
ニース応答 - 私はあなたがで同じことを実行するためのPHPコードを見つけることができることを追加したい:http://www.thetechnote.com/ 2011/02/3-useful-geolocation-functions-in-php / – soulkphp