在离接载点(LatLng)X米/公里的地方找到一个点(LatLng),并且不要将其放在水域(海水)

时间:2019-07-09 11:16:25

标签: android google-maps

我必须在Google地图上从选定的已知点(LatLng)到200米左右的距离绘制一条曲线。 200m之后的点(LatLng)不应在水(海)中。因此,

方法:

1。在距拾取点200m处找到另一个点(LatLng)。

2。点(LatLng)不应在水(海)中。

enter image description here

已编辑的问题:

请忽略“曲线线”。它可以是一条直线,主要问题是我上面提到的两点。

1 个答案:

答案 0 :(得分:0)

这是一个模棱两可的问题的不完整答案。

您表示“曲线”,但未指定曲线功能,因此无法提供专门的帮助。

如果“弯曲线”是指围绕某个点的圆圈,那么您可能会对android-maps-utils中的SphericalUtil类感兴趣,该类可从某个点查找“偏移”(computeOffset)-但是这假设一个从中心点开始的圆-很难应用于未知的曲线函数。当然,地图本身提供了addCircle

此外,要确定地球表面上是否有任何一个点在水中,您可以按照以下答案使用Google Maps Reverse Geocoding:https://stackoverflow.com/a/9644812/2711811。它提到了使用“ type”字段(对于水来说是“ natural_feature”)。

但是,这个答案留下了一个普遍的问题,即“如何在距中心点200米的水中找不到点”,而没有一种不确定的迭代方法-(即,一直采集随机点直到不在水中),如果中心点位于150米的岛上)。要解决此问题,您必须将点空间限制在陆地上,这意味着您需要了解陆地/海洋。

距离中心点200米处的随机点示例:

SphericalUtil.computeOffset(pickupPoint, 200, new Random(System.currentTimeMillis()).nextDouble * 360)

随时为您的问题添加更多细节。