我有这个标准的mysql我正在使用$ latlng是lat和用户输入的长度。我得到了正确的坐标。然后我使用Haversine公式来获得半径。我使用的输出在foreach中排序,这是正确的,直到你想要“驾驶距离”。有没有想过通过使用mysql驾驶来获得正确的距离?注意我可以通过谷歌距离矩阵进行驾驶,但是在json返回时不在mysql语句中我并从中获取所有数据。
SELECT SQL_CALC_FOUND_ROWS *, ( 3959 * acos( cos( radians('{$latlng['lat']}') ) * cos( radians( a.lat ) ) *
cos( radians( a.lng ) - radians('{$latlng['lng']}') ) + sin( radians('{$latlng['lat']}') ) *
sin( radians( a.lat ) ) )
) AS radius
FROM (
SELECT p.*, pm_lat.meta_value-0.0 AS lat, pm_lng.meta_value-0.0 AS lng
FROM $wpdb->posts p
LEFT JOIN $wpdb->postmeta AS pm_lat ON (p.ID=pm_lat.post_id AND pm_lat.meta_key='_location_coordinates_lat')
LEFT JOIN $wpdb->postmeta AS pm_lng ON (p.ID=pm_lng.post_id AND pm_lng.meta_key='_location_coordinates_lng')
WHERE p.post_status = 'publish'
) AS a
HAVING radius < $radius
ORDER BY radius ASC