我想找到Android中两个地点的交叉点。
我不想考虑图中所示的圆圈相交或包含或完全重叠的情况。
我的问题是,位置以度为单位,半径(精度)以米为单位。我不知道如何混合这些单位。
在我的情况下,环境是Android,但问题不是Android特定的。
答案 0 :(得分:4)
您必须将latitdue,经度转换为笛卡尔坐标系,并使用单位米 这是使用中心纬度=(latitudeCircle1 + latCircle2)/ 2.0的圆柱等距投影完成的。 (中心经度相同)
(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
然后使用反投影将笛卡尔交点转换回lat,lon。
这适用于两个圆圈之间的距离不超过10-100公里。
注意:以下常见错误,我在与您的示例代码的讨论中看到: 请注意,x与经度相关,y与纬度相关。 虽然我们说lat / long。在这样的转换公式中,您应该在参数名称等中使用long,lat顺序。 另请参阅Lat Long or Long Lat