查找两个位置的交集

Find intersection of two Locations

我想找到 Android 中两个 Locations 的交点。

我不想考虑图中所示的圆圈不相交或包含或完全重叠的情况。

我的问题是位置以度为单位,半径(精度)以米为单位。我不知道如何混合这些单位。

在我的例子中,环境是 Android,但问题不是 Android 具体的。

你必须将纬度、经度转换为笛卡尔坐标系,单位是米。
这是使用中心纬度 = (latitudeCircle1 + latCircle2) / 2.0 的圆柱等距投影完成的。 (中心经度相同)

(http://mathworld.wolfram.com/CylindricalEquidistantProjection.html)

在上面的 link 中,要获得基于仪表的系统,您还需要乘以常数 "meterPerDegreeAtEquator",即 40000000 / 360.0

现在你有了坐标 x,y,就像你在学校时一样。

然后你计算圆的交点,就像在学校学到的,或者在网上找到的那样。例如:https://math.stackexchange.com/questions/256100/how-can-i-find-the-points-at-which-two-circles-intersect

然后使用逆投影将笛卡尔交点转换回纬度、经度。

这适用于两个圆圈之间的距离不超过 10-100 公里。

注意:低于常见错误,这是我在与您的示例代码的讨论中看到的: 请注意,x 与经度有关,y 与纬度有关。 虽然我们说lat/long。在这样的转换公式中,您应该在参数名称等中使用 long,lat order。 另见 Lat Long or Long Lat