【发布时间】:2012-08-14 04:23:02
【问题描述】:
我现在可以在我的网站上使用移动浏览器获取访问者的纬度和经度。我的网站上有一个包含 1000 多个位置的数据库,作为自定义 wordpress 内容类型的帖子。每个位置都有与之关联的纬度和经度。
我希望网站像这样工作:
当用户到达时,它会要求他们分享他们的位置 (DONE)
然后它将它们的 lat 和 long 存储在 PHP 变量中(EASY、NEXT)
现在获取他们的经纬度,并查询数据库,并列出最近的帖子,如下所示:
-----帖子标题 1(1.3 英里外)
-----帖子标题2(1.7英里外)
等等。
如何在我的 wordpress 安装中使用 PHP 来执行此操作?
很抱歉这么快就编辑了。我从谷歌找到了一个页面,看看它是否能满足我的需要。 https://developers.google.com/maps/articles/phpsqlsearch_v3?hl=hu-HU
这里的主要问题,我的经纬度在数据库中是这样存储的:
表:wp_postmeta
Column1:meta_key(这包含许多不同的值,但我只关心包含“location_latitude”或“location_longitude”的值)
Column2:46.346940(包含经纬度数字,具体取决于 Column1 中的内容)
那么我怎样才能将此查询转换为使用我的数据库呢?SELECT post_id, ( 3959 * acos( cos( radians(37) ) * cos( radians( LATITUDE ) ) * cos( radians( LONGITUDE ) - radians(-122) ) + sin( radians(37) ) * sin( radians( LATITUDE ) ) ) ) AS distance FROM wp_postmeta HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
【问题讨论】:
-
我当前的测试代码
SELECT post_id, ( 3959 * ACOS( COS( RADIANS( 37 ) ) * COS( RADIANS( 34.09) ) * COS( RADIANS( -117.55 ) - RADIANS( -122 ) ) + SIN( RADIANS( 37 ) ) * SIN( RADIANS( 34.09 ) ) ) ) AS distance FROM wp_postmeta WHERE 'meta_key' LIKE '%location_l%' HAVING distance <250 ORDER BY distance LIMIT 0 , 20
标签: php mysql wordpress geolocation