驾驶距离计算mysql

时间:2015-03-14 12:25:57

标签: mysql geolocation maps

我有这个标准的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

0 个答案:

没有答案