如何查询SQL以获取最接近点的坐标?

时间:2018-11-28 16:01:01

标签: php wordpress mysql

这就是我想要做的:

我从表单中获取坐标:

&usp-custom-20=45.492384716155605&usp-custom-19=9.206341950000024

我查询SQl以查找那些坐标附近的所有帖子,因为每个帖子都有带有latlng的自定义字段

帖子1:

usp-custom-19 = 45.492384716155605
usp-custom-20 = 9.206341950000024

帖子2:

usp-custom-19 = 45.512383456255605
usp-custom-20 = 9.326341933210024

然后我运行这个:

$posts = $wpdb->get_col( "SELECT m.post_id FROM $wpdb->postmeta m, $wpdb->postmeta n WHERE m.post_id=n.post_id AND m.meta_key='get_usp-custom-19' AND n.meta_key='get_usp-custom-20' AND (POW( CAST(m.meta_value AS DECIMAL(7,4)) - $lat, 2 ) + POW( COS(0.0175 * $lat) * ( CAST(n.meta_value AS DECIMAL(7,4)) - $ln ), 2 ) ) ) < $rad * $rad");
foreach($posts as $post) { 
    the_title();
}

但是我什么也没得到。

  

这使用勾股定理,该定理仅在平面上有效   表面。两点必须足够接近,以使三角形   本质上是在平坦的表面上。 (否则,您需要   圆”公式。)此外,如果两点也有问题   横跨本初子午线的对面-180子午线   度-国际日期变更线。

1 个答案:

答案 0 :(得分:0)

这就是我最后得到的

$post_ids = $wpdb->get_col("SELECT j.post_id FROM $wpdb->postmeta j, $wpdb->postmeta k where j.post_id = k.post_id and j.meta_key='usp-custom-19' and k.meta_key='usp-custom-20' and ( 6371 * acos( cos( radians($lat) ) * cos( radians( j.meta_value ) ) * cos( radians( k.meta_value ) - radians($ln) ) + sin( radians($lat) ) * sin(radians(j.meta_value)) ) ) < 50");