1

我正在尝试编写一些代码来搜索地图上的给定点,但在给定的罗盘方位弧中。

例如 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 应用到它?

非常感谢任何和所有帮助!

4

2 回答 2

1

感谢 vartec 的帮助,但我发现这个网站http://www.movable-type.co.uk/scripts/latlong.html提供了大量与坐标和计算有关的信息。

于 2010-06-09T07:51:37.657 回答
0

具有空间扩展的数据库是可能的。

我认为您使用的是 MySQL,这里描述了它的空间扩展:http: //dev.mysql.com/doc/refman/5.5/en/spatial-extensions.html

于 2010-06-02T08:31:25.473 回答