好理解了它,这似乎工作,是不是非常慢
//users latitude
$lat = $_POST['lat'];
//users longitude
$lon = $_POST['lon'];
//search distance
$rad = $_POST['distance'];
//earth radius in miles use 6371 for km
$earth = 3959;
$SqlStr = "
SELECT Name, (".$earth." * ACOS(SIN(".$lat."/ CAST(57.2958 AS NUMERIC(10,4)))*SIN(lat/CAST(57.2958 AS NUMERIC(10,4)))+COS(".$lat."/ CAST(57.2958 AS NUMERIC(10,4)))*
COS(lat/CAST(57.2958 AS NUMERIC(10,4)))*COS(lon/CAST(57.2958 AS NUMERIC(10,4)) - CAST(".$lon." AS NUMERIC(10,4))/CAST(57.2958 AS NUMERIC(10,4))))) as distance
FROM DB TABLE NAME
WHERE (".$earth." * ACOS(SIN(".$lat."/ CAST(57.2958 AS NUMERIC(10,4)))*SIN(lat/CAST(57.2958 AS NUMERIC(10,4)))+COS(".$lat."/ CAST(57.2958 AS NUMERIC(10,4)))*COS(lat/CAST(57.2958 AS NUMERIC(10,4)))*
COS(lon/CAST(57.2958 AS NUMERIC(10,4)) - CAST(".$lon." AS NUMERIC(10,4))/CAST(57.2958 AS NUMERIC(10,4))))) <= ".$rad." ORDER BY distance
";
这是一个相当复杂的过程,但可以做到的,看看这个链接(http://www.mssqltips.com/sqlservertip/2690 /计算最地理距离,二,城市 - 在-SQL服务器之间-/)。 –