【问题标题】:Radius of 40 kilometers using latitude and longitude [duplicate]使用纬度和经度的40公里半径[重复]
【发布时间】:2012-01-13 12:07:35
【问题描述】:

可能重复:
Radius of multiple latitude/longitude points
distance calculations in mysql queries
select within 20 kilometers based on latitude/longitude

我有一个存储数据的 MyISAM 表。数据包括谷歌地图的纬度和经度。我想要实现的是选择样本经纬度40公里半径范围内的所有物体。

谢谢!

【问题讨论】:

标签: php mysql google-maps


【解决方案1】:

我使用这个查询来获取$radius 内的所有点,围绕$lat/$lng

SELECT
    *,
    ( 6371 * acos( cos( radians({$lat}) ) * cos( radians( `lat` ) ) * cos( radians( `lng` ) - radians({$lng}) ) + sin( radians({$lat}) ) * sin( radians( `lat` ) ) ) ) AS distance
FROM `positions`
HAVING distance <= {$radius}
ORDER BY distance ASC

6371 是地球半径 im km。而且我还没有发明它: http://code.google.com/intl/en/apis/maps/articles/phpsqlsearch.html https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql(编辑:网址已更改)

【讨论】:

  • 如果我必须以英里为单位使用,那么我必须更改 (6371) 吗??
  • 以英里为单位的地球半径是3959 - 只需将数字替换为该数字,您的结果将以英里而不是公里为单位。
  • @DerVO 查询中的 $lat 和 $long 变量的格式是什么?
  • @AshifShereef 从 -180 到 +180,例如$lat = -74.016617; $lng = 40.747933; 哈德逊河中的任意点。
  • @AshifShereef 并且 - 至少我认为 - 我已经回答了你,它是十进制度 (en.wikipedia.org/wiki/Decimal_degrees)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多