我正在尝试编写一些代码来搜索地图上的给定点,但是在指南针的给定弧中。
e.g。 45度(东北),两侧20度。
到目前为止,我有一个SQL命令可以给出给定半径的结果,需要一些有关如何将其过滤到某个方向的帮助。
SELECT * FROM (SELECT `place1_id`, `place2_id`, ( 6371 * acos( cos( radians(search_latitude) ) * cos( radians( `location_lat` ) ) * cos( radians( `location_long` ) - radians(search_longitude) ) + sin( radians(search_latitude) ) * sin( radians( `location_lat` ) ) ) ) AS `distance` FROM `place` ORDER BY distance) AS `places` WHERE `places`.`distance` < search_radius AND `places`.`place2_id` = ?
我是否可以在SQL中执行此操作(如果可能),还是需要一些PHP应用于它?
任何和所有帮助非常感谢!
答案 0 :(得分:1)
感谢vartec的帮助,但我找到了这个网站http://www.movable-type.co.uk/scripts/latlong.html,它提供了大量有关联合和计算的信息。
答案 1 :(得分:0)
数据库可以使用空间扩展。
我认为你正在使用MySQL,它的空间扩展在这里描述: http://dev.mysql.com/doc/refman/5.5/en/spatial-extensions.html