作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在寻找创建一个 MySQL 查询来查找世界指定区域内的所有记录。每条记录包含一个点(纬度/经度),我有指定区域的右上角(纬度/经度)和左下角(纬度/经度)。
有了这些信息,我怎样才能找到合适的记录?
最佳答案
LAT1 = MIN(右上纬度,左下纬度)
LAT2 = MAX(右上纬度,左下纬度)
LON1 = MIN(右上经度,左下经度)
LON2 = MAX(右上角经度,左下角经度)
SELECT fields
FROM points
WHERE lat BETWEEN LAT1 AND LAT2
AND lon BETWEEN LON1 AND LON2
这样,如果您带着盒子穿过本初子午线或赤道,查询应该会处理。
要处理第 180 条子午线(或逆子午线),您需要比较右经度和左经度,检查右经度是否为负而左经度是否为正。如果是这样,那么您已经穿过第 180 条子午线。然后,您的查询必须如下所示:
SELECT fields
FROM points
WHERE lat BETWEEN LAT1 AND LAT2
AND (lon BETWEEN -180 AND LON1 OR lon BETWEEN LON2 AND 180)
不过,我宁愿不去想如何处理一个位于地球顶部或底部的盒子,它位于真正的两极之一之上。 =)
关于mysql - 如何查询纬度/经度区域内的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920565/
我有数百个位置的列表,只想显示当前屏幕上这些位置的 MKPinAnnotation。屏幕从 2 英里半径内的用户当前位置开始。当然,用户可以滚动和缩放屏幕。现在,我等待 map 更新事件,然后循环遍历
我试过检查 CGRect: CGFloat imageX1 = imageView.frame.origin.x; CGFloat imageY1 = imageView.frame.origin
我是一名优秀的程序员,十分优秀!