gpt4 book ai didi

javascript - 如何计算经纬度的距离并在php中选择最短距离

转载 作者:搜寻专家 更新时间:2023-10-30 23:36:36 25 4
gpt4 key购买 nike

这里我要计算的是位置之间的距离,计算完后后面的数据只会显示距离最小的。但我很困惑如何根据以下数据进行制作:

我的 wp_posts : data1

这是我的 wp_postmeta :

here

这是我的代码:

<?php
$latitude = "23.139422";
$longitude = "-82.382617";

mysql_query( 'SELECT ( 3959 * acos( cos( radians( '.$latitude.' ) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians( '.$longitude.' ) ) + sin( radians( '.$latitude.' ))
* sin( radians( latitude ) ) ) )
AS distance from wp_posts
HAVING distance <= 100
ORDER BY distance ASC'
)

我不知道如何通过 ID post_id

获取经纬度

有人告诉我我需要在我的代码中改进什么,这样它才能像我想要的那样工作吗?谢谢圭

-

最佳答案

这是从元数据中获取纬度和经度的方法:

SELECT wp_posts.ID, pm1.meta_value, pm2.meta_value
FROM wp_posts
LEFT JOIN wp_postmeta AS pm1
ON pm1.post_id = wp_posts.ID
AND pm1.meta_key = 'latitude'
LEFT JOIN wp_postmeta AS pm2
ON pm2.post_id = wp_posts.ID
AND pm2.meta_key = 'longitude';

如果我们尝试将此应用于您的 SQL 语句(假设您的公式有效):

SELECT ( 3959 * acos(cos( radians( '.$latitude.' ) ) * cos( radians( pm1.meta_value)) 
* cos( radians( pm2.meta_value ) - radians( '.$longitude.' ) )
+ sin( radians( '.$latitude.' ))
* sin( radians( pm1.meta_value) ) ) ) AS distance
FROM wp_posts
LEFT JOIN wp_postmeta AS pm1
ON pm1.post_id = wp_posts.ID
AND pm1.meta_key = 'latitude'
LEFT JOIN wp_postmeta AS pm2
ON pm2.post_id = wp_posts.ID
AND pm2.meta_key = 'longitude'
HAVING distance <= 100
ORDER BY distance ASC;

它可能看起来很复杂,但如果你仔细看第一个就不是了。它应该可以帮助您了解如何通过使用不同的别名(pm1 表示纬度,pm2 表示经度)从同一个表中检索相同记录的数据并将其连接两次。

希望对您有所帮助。

关于javascript - 如何计算经纬度的距离并在php中选择最短距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41479249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com