java - 查找周围给定经纬度的纬度值(即: location) with specified radius using java program

标签 java javascript mysql google-maps google-maps-api-3

所有经纬度值(包括当前位置和其他位置)在 mysql db 表中都是 varchar 数据类型。我正在努力获取当前位置 2 公里或 5 公里半径范围内的所有最大和最小纬度/经度值。我当前位置的纬度和经度值以及其他位置的纬度/经度值使用 google map api 存储到 mysql db 表中。

我需要从表中获取位置记录(最大/最小纬度/经度值),这些记录都在当前位置的给定半径内。

输入:

位置:AA(或)纬度:12.561 和经度:77.48 半径/距离:2km

表格:

位置 |纬度 |长

AA | 12.561 | 77.48

A2 | 12.567 | 77.489

A4 | 12.59 | 78.42

A6 | 12.57 | 77.45

输出:

满足上述条件的位置名称列表。

如果您能给出几行 java 代码,那将是很大的帮助。

我需要在不使用方位 Angular 值的情况下获取所有方向 (N/E/S/W) 的纬度/经度值的 o/p,因为我的应用程序没有方位 Angular 值。它应该仅使用当前位置纬度/经度和距离/半径值的输入来获取输出值。

最佳答案

您需要将坐标从 Varchar 更改为 DECIMAL(8, 6) 以允许计算距离。

以下 SQL 查询使用 Spherical Law of Cosines计算表格中坐标与坐标之间的距离。

d = acos( sin(φ1).sin(φ2) + cos(φ1).cos(φ2).cos(Δλ) ).R

查询使用MySQL Math functions

"SELECT Location,Lat,Long,(6367 * acos( cos( radians(center_lat) )
  * cos( radians( Lat ) ) * cos( radians( Long ) - radians(center_long) )
  + sin( radians(center_lat) ) * sin( radians( Lat ) ) ) ) AS distance FROM table 
  HAVING distance < radius ORDER BY distance ASC LIMIT 0 , 20"

其中center_lat &center_long 是给定点的坐标

PS 使用 3956 英里 6367 公里

关于java - 查找周围给定经纬度的纬度值(即: location) with specified radius using java program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208554/

相关文章:

MySQL:如何仅显示最小计数而不使用限制?

mysql - 在 MySQL 数据库中使用 null。三个外键之一必须不为空。

java - 在 Map 的 Value 字段中存储多个字符串

java - Gradle 构建忽略 Jetbrains 注释

javascript - 在 html5 Canvas 上旋转对象后返回未转换的鼠标坐标

mysql - SQL 查询获取一个字段对于另一个特定字段重复的次数

java - 如何在另一个 Activity 的 TextView 中调用方法的输出?

java - 如果 main() 只启动另一个带有计时器作业的线程,那么 main() 该怎么办?

JavaScript:有没有更好的方法来做一个带有回调函数的for循环?

javascript - JavaScript 中的静态方法?