【问题标题】:Android Google Maps get Boundary Co-ordinatesAndroid Google Maps 获取边界坐标
【发布时间】:2013-02-05 05:01:26
【问题描述】:

我在我的应用程序中使用 Google Maps v2。当用户在屏幕上平移或缩放时,我想获取地图的区域,我希望仅在屏幕视图部分中获取 POI。
我浏览了文档,但找不到任何帮助。

【问题讨论】:

    标签: android google-maps-android-api-2 bounds


    【解决方案1】:

    您需要使用 Projection 和 VisibleRegion 类才能获得可见的 LatLng 区域。
    所以你的代码看起来像:

    LatLngBounds curScreen = googleMap.getProjection()
        .getVisibleRegion().latLngBounds;
    

    【讨论】:

    • 我试过了,我只得到西北和西南的价值。知道如何获得其他两个值吗?
    • 你是指东北和西南?如果是这样 - 这就是边界框的表示方式(视口的右上角和左下角)。鉴于这两点,计算其他两点非常简单。正确的?检查某个 POI(LatLng) 是否在框内的最简单方法是调用LatLngBounds.contains(LatLng point) 接口。但是,在地图上显示大量标记是另一回事
    • 我怎样才能得到另外两分,对不起,我很困惑。 Ant 关于显示很多标记有没有优化的方法?
    • 好吧,左上角的坐标是[curScreen.southwest.longitude;curScreen.northeast.latitude],右下角的坐标是[curScreen.northeast.longitude;curScreen.southwest.latitude]。您可以将纬度视为Y 轴,将经度视为X 轴
    【解决方案2】:

    在 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)
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多