安卓谷歌地图获取边界坐标

27

我在我的应用程序中使用Google Maps v2。当用户在屏幕上平移或缩放时,我想根据地图的面积获取屏幕视图部分中的POI,并仅获取该部分。
我查阅了文档,但没有找到任何帮助。

2个回答

61
你需要使用ProjectionVisibleRegion类来获取可见的LatLng区域。
因此,你的代码应该像这样:
LatLngBounds curScreen = googleMap.getProjection()
    .getVisibleRegion().latLngBounds;

2
你是指东北和西南吗?如果是的话 - 这就是边界框的表示方式(视口的右上角和左下角)。给定这两个点,计算其他2个点非常简单。对吧?检查某个POI(LatLng)是否在框内的最简单方法是调用LatLngBounds.contains(LatLng point)接口。然而,在地图上显示大量标记是另一回事。 - Pavel Dudka
6
好的,左上角将具有[curScreen.southwest.longitude; curScreen.northeast.latitude]坐标,右下角将具有[curScreen.northeast.longitude; curScreen.southwest.latitude]坐标。您可以将纬度视为Y轴,将经度视为X轴。 - Pavel Dudka
它返回了0.0的纬度和经度,有什么想法吗? - kgandroid
@kgandroid通常意味着当前位置目前未知。 - Pavel Dudka
1
请看这个链接:http://stackoverflow.com/questions/31446401/latlng-bound-returns-0-0 - kgandroid
显示剩余6条评论

1
在Android(Kotlin)中,您可以通过以下方式找到LatLng,在每次缩放或手势检测中。
private var mMap: GoogleMap? = null
..........



    mMap?.setOnCameraMoveStartedListener { reasonCode ->
        if (reasonCode == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE) {
            val curScreen: LatLngBounds =  mMap!!.getProjection().getVisibleRegion().latLngBounds
            var northeast=curScreen.northeast
            var southwest=curScreen.southwest
            var center=curScreen.center
            Log.v("northeast LatLng","-:"+northeast)
            Log.v("southwest LatLng","-:"+southwest)
            Log.v("center LatLng","-:"+center)
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接