使用当前位置创建50英里半径的LatLngBounds

时间:2016-03-27 10:35:07

标签: android

我想为50Mile radius wrt创建LatLngBounds。当前位置。与google places api一起使用。

现在,我在网上关注一个例子

//Southwest corner to Northeast corner.
LatLngBounds bounds = new LatLngBounds(
                          new LatLng(39.906374, -105.122337), 
                          new LatLng(39.949552, -105.068779)
                      );

你能提供指示吗?

更新

我用这个作为答案:

How to convert a LatLng and a radius to a LatLngBounds in Android Google Maps API v2?

1 个答案:

答案 0 :(得分:2)

我认为,你知道如何弄清楚用户的位置。关于这个主题有很多信息。

因此,主要问题是找出要用作边界的角落。这被称为直接测地问题(参见:https://en.wikipedia.org/wiki/Geodesics_on_an_ellipsoid)。您有几种方法可以解决它:

  1. 使用java库(http://geographiclib.sourceforge.net/html/java/)使用以下方法计算角点的坐标:

    Geodesic.WGS84.Direct(lat1,lon1,azi1,s12)

    (参见文档:http://geographiclib.sourceforge.net/html/java/net/sf/geographiclib/Geodesic.html

    请注意,您必须确定沿途的方位角。

  2. 使用内置的android.location.Location类。它有一个静态方法'distanceBetween',它取两点的坐标并计算它们之间的距离。

    这里的要点是使用“分而治之算法”来找到你的边界矩形的顶部/底部纬度和左/右经度。

  3. 如果准确性不是问题,请使用固定值将距离转换为近似纬度/经度。