我想找到 Android 中两个位置的交点。
我不想考虑如图所示的圆圈不相交或包含或完全重叠的情况。
我的问题是位置以度为单位给出,半径(精度)以米为单位给出。我不知道如何混合这些单位。
就我而言,环境是 Android,但问题不是 Android 特有的。
您必须将纬度、经度转换为笛卡尔坐标系,单位为米。
这是使用中心纬度 = (latitudeCircle1 + latCircle2) / 2.0 的圆柱等距投影来完成的。
(中心经度相同)
(http://mathworld.wolfram.com/CylindricalEquidistantProjection.html http://mathworld.wolfram.com/CylindricalEquidistantProjection.html)
在上面的链接中,要获得基于米的系统,您还需要乘以常数“meterPerDegreeAtEquator”,即 40000000 / 360.0
现在你有了像在学校一样的坐标 x,y。
然后,您可以按照在学校学到的或在网络上的某个地方找到的方式计算圆的交点。例如这里:https://math.stackexchange.com/questions/256100/how-can-i-find-the-points-at-which-two-circles-intersect https://math.stackexchange.com/questions/256100/how-can-i-find-the-points-at-which-two-circles-intersect
然后,使用逆投影将笛卡尔交点转换回纬度、经度。
这适用于两个圆圈之间的距离不超过 10-100 公里。
Note:下面是我在与示例代码的讨论中看到的常见错误:
请注意,x 与经度相关,y 与纬度相关。
虽然我们说纬度/经度。在此类转换公式中,您应该在参数名称等中使用 long、lat 顺序。
也可以看看纬度长或长纬度 https://stackoverflow.com/questions/18636564/lat-long-or-long-lat/18721489#18721489
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)