मैं गूगल मैप्स रिवर्स-जियोकोडिंग API से अक्षांश और देशांतर और फिर मैं कुछ इस तरह की जरूरत है:MySQL के साथ हावर्सिन फॉर्मूला का उपयोग करके दूरी को मापने के लिए कैसे?
mysql_query("SELECT users.*, ".mysql_distance_column($lat,$lng)." FROM users ORDER BY DISTANCE";
function mysql_distance_column($lat=40 , $lng=-73) {
$defaultLatitudeColumn = 'user_lat';
$defaultLongitudeColumn='user_lng';
$defaultColumnName='user_distance';
return "((
(3956 * 2 * ASIN(SQRT(POWER(SIN(({$lat} - abs({$defaultLatitudeColumn}))
* pi()/180/2), 2) + COS({$lat} * pi()/180)
* COS(abs({$defaultLatitudeColumn}) * pi()/180)
* POWER(SIN(({$lng} - {$defaultLongitudeColumn}) * pi()/180/2), 2)))
))) as {$defaultColumnName} ";
}
अद्यतन मैं जीई नहीं कर सकते यह काम करने के लिए
delimiter //
CREATE FUNCTION `GeoDistMiles`(lat1 FLOAT (10,6), lon1 FLOAT (10,6), lat2 FLOAT (10,6), lon2 FLOAT (10,6))
RETURNS FLOAT
DETERMINISTIC
NO SQL
BEGIN
DECLARE pi, q1, q2, q3 FLOAT (10,6);
DECLARE rads FLOAT (10,6) DEFAULT 0;
SET pi = PI();
SET lat1 = lat1 * pi/180;
SET lon1 = lon1 * pi/180;
SET lat2 = lat2 * pi/180;
SET lon2 = lon2 * pi/180;
SET q1 = COS(lon1-lon2);
SET q2 = COS(lat1-lat2);
SET q3 = COS(lat1+lat2);
SET rads = ACOS(0.5*((1.0+q1)*q2 - (1.0-q1)*q3));
RETURN 3963.346 * rads;
END
आपकी गणना कितनी दूर है? क्या वे बंद हैं या बस थोड़ा दूर हैं? – anon