检查纬度和经度是否在圆圈内[服务器端]

时间:2018-07-04 06:27:23

标签: java google-maps-api-2

我想知道谷歌地图是否有可用的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,或者我需要创建函数来验证位置。

1 个答案:

答案 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。

编辑:格式化