這應該是你在追求什麼。
//Get your base city location e.g. New York
$base_lat = 12.32356;
$base_lng = 23.20323;
//Get target distance in miles
$target_distance = 31; //50km is approx 31 miles
//Select all cities that are closer than 50km (31 miles)
SELECT id, (3959 * acos(cos(radians('.$base_lat.')) * cos(radians(latitude)) * cos(radians(longitude) - radians('.$base_lng.')) + sin(radians('.$base_lat.')) * sin(radians(latitude)))) AS distance
FROM cities
WHERE latitude IS NOT NULL
AND longitude IS NOT NULL
HAVING distance < $target_distance
ORDER BY distance ASC
//Select all cities that are further than 50km (31 miles)
SELECT id, (3959 * acos(cos(radians('.$base_lat.')) * cos(radians(latitude)) * cos(radians(longitude) - radians('.$base_lng.')) + sin(radians('.$base_lat.')) * sin(radians(latitude)))) AS distance
FROM cities
WHERE latitude IS NOT NULL
AND longitude IS NOT NULL
HAVING distance > $target_distance
ORDER BY distance ASC
請參閱http://stackoverflow.com/q/13951056/50866 –
經度單位的大小根據緯度而變化。越接近極點,每個度數代表的物理距離越小。 – SDC