我想知道谷歌地图是否有可用的Java API来检查圆内的特定经度和纬度。我没有使用任何android或ios客户端。我需要在后端服务器上执行此操作。我发现有一种方法可以在android sdk [Check if a latitude and longitude is within a circle]中解决此问题,但是我需要一些参考资料,以了解如何在后端服务器中解决此问题。
这些是我想要的要求
用户发送位置:lat1,lng1
服务器圈位置:latCenter,lngCenter,半径
我需要的是检查用户在Google地图圈子内的发送位置。 在google中,我找到了此引用[https://github.com/googlemaps/google-maps-services-java],但这并未为我的问题提供任何解决方案。我想知道是否有适用于Google地图的标准api,或者我需要创建函数来验证位置。
答案 0 :(得分:1)
有多种选择。一个稍微复杂一点,它涉及一个事实,即一个圆在其边界上由3个点唯一地定义,并且计算出合适矩阵的行列式(包括三个点的坐标加上您的参考点)。虽然这是一种精心设计的方法,但您可以轻松地下车:
由圆(半径r
和中心c_x, c_y
)包围的圆盘由公式
{(p,q) | (p-c_x)^2 + (q-c_y)^2 < r^2}
(如果将边界也算在内,则用小于或小于等于代替小于。
这意味着您只需计算值即可
(p-c_x)^2 + (q-c_y)^2
并将其与r^2
进行比较,以获取点(p,q)
在圆内,圆外还是圆上的信息。
请注意,由于计算机系统中的浮点数不准确,并且取决于您的用例,您可能不想检查边界的确切相等性,而是要检查两个值的差是否接近0。
编辑:格式化