2012-01-02 6 views
0

可能性の重複:
Nearest locations with latitude and longitudemysqlの選択/緯度長い特定の場所に最も近い

私はデシベル1000の以上の場所(緯度、経度)の上に持っていると私は選択したいです特定の場所に応じて5つの最も近いものa(lat、long)!どのようにこれを行うにはアイデアを与えることができます!私はあまりにも多くの時間を作る、他の場所との間のすべての距離を計算するテストをしたくない!

これは私がすると思ったものですが、わかりません!

$lat = round (48.89463, 3); 
    $lng = round (2.33739,2); 

    $sql=mysql_query("SELECT * 
    FROM tbl z 
    WHERE ROUND(z.lat,3) LIKE $lat AND ROUND(z.long,2) LIKE $lng 
    LIMIT 0,5") or die(mysql_error()); 
    while($row=mysql_fetch_assoc($sql)) 
    { 
    echo $row[lat].";".$row[long]."<br>"; 
    } 

ありがとうございます!

+0

ありがとうございましたhakre !! –

答えて

1

great-circle distanceを使用できます。

$lat = round (48.89463, 3); 
$lng = round (2.33739,2); 

$sql=mysql_query("SELECT * 
FROM tbl z 
ORDER BY ACOS(COS(RADIANS($lat))*COS(RADIANS(z.lat))*COS(RADIANS(z.long)RADIANS($lng))+SIN(RADIANS($lat))*SIN(RADIANS(z.lat)) 
WHERE ROUND(z.lat,3) LIKE $lat AND ROUND(z.long,2) LIKE $lng 
LIMIT 0,5") or die(mysql_error()); 
while($row=mysql_fetch_assoc($sql)) 
{ 
echo $row[lat].";".$row[long]."<br>"; 
} 
+0

素晴らしい感謝:) –