我正在使用这个标准 mysql,其中 $latlng 是用户输入的纬度和经度。我得到了正确的坐标。然后我使用半正矢公式来获取半径。我用来对 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
在您的应用程序中计算驾驶距离,例如Dr.驾驶g,您可以使用 Google Maps API 等地图 API 来获得准确的结果。这些 API 根据现实世界的道路网络计算行驶距离,这对于提供真实的体验至关重要。例如,您可以使用 Google 地图距离矩阵 API 来获取两点之间的行驶距离。如果您的应用程序依赖于自定义地图或轨道,您可能需要开发算法来根据游戏的特定布局和道路条件来模拟距离。整合这些方法将增强驾驶博士的驾驶体验。