0

我的 android 应用程序上有一个 Google Map 片段。

我在地图上绘制了代表感兴趣地点的标记,并且我有一个额外的功能,可以在中心绘制一个圆,半径由用户定义。

我想要做的是只有包含在这个圆圈内的标记才会显示在地图上。我正在使用来自 Google maps Shapes 的 Circle 对象来绘制圆。

问题是,虽然圆的中心是用纬度/经度坐标定义的,但它的半径是用米定义的。那么如何计算 LatLng 中某个地方的位置是否包含在以米为单位定义的半径内?

谢谢

4

2 回答 2

3

您所需要的只是计算两个LatLngs是否比半径更接近。

为此,您可以使用Location.distanceBetween.

有关示例,请参见Circle.contains此处的函数。

于 2013-05-21T20:05:17.700 回答
2

基本上你要做的就是测试所有点并使用光线投射来测试圆边上的点。

如果您只发现 1 次与一侧的碰撞,则该点位于圆内,如果您发现 2 个碰撞点,则该点位于圆外。

这听起来很吓人,但一旦你理解它就不会太糟糕

这是有关所涉及内容的优秀文档。我使用了第一个和第二个答案的组合来类似的东西

于 2013-05-21T15:37:06.927 回答