繁体   English   中英

在Google Map上指定一个区域作为支持区域-Google Maps Android Api

[英]Specify an area on Google Map as support area - Google Maps Android Api

我在Android项目中使用Google Map API,一切正常,但我想在地图上有一个支持区域,以允许用户将自己的地址固定在该区域上。

在JavaScript中,有一个kmlLayer和一个侦听器来查找kmllayer单击。 通过这种方式,我得到了单击点的纬度和经度。

但是在android中,只有setOnFeatureClickListener侦听器( Google Map Android kmlLayer文档 ),我想用kml多边形显示我的区域,然后使其可单击或获得图层的单击点的纬度和经度。

除了获得我上面解释的接触点的经度和纬度之外,我还可以获取地图中心坐标。 因此,如果我可以检查地图中心在kml多边形中,那么我的问题就可以解决!

为了解决我的问题,我尝试了许多方法和技术,并提出了许多问题。 我的一个问题中,我试图在地图图层上触发触摸监听器。

对于英语不好,我也表示歉意,我想我的解释很清楚。如果您不这么认为,请发表评论,我会做更多解释!

首先,您应该创建一个LatLngBounds.Builder对象,然后像这样遍历KMLKmlContainer

public void accessContainers(Iterable<KmlContainer> containers) {
    for(KmlContainer c : containers) {
        if(c.hasPlacemarks()) {
            for(KmlPlacemark p : c.getPlacemarks()) {
                Geometry g = p.getGeometry();
                Object object = g.getGeometryObject();

                if(object instanceof LatLng) {
                    LatLng latlng = (LatLng)object;
                    latLngBoundsBuilder.include(latlng);
                }

                if(object instanceof List<?>) {
                    List<LatLng> list = (List<LatLng>)object;
                    for(LatLng latlng : list) {
                        latLngBoundsBuilder.include(latlng);
                    }
                }

                Log.d(TAG, g.getGeometryType() + ":" + object.toString());
            }
        }
        if(c.hasContainers()) {
            accessContainers(c.getContainers());
        }
    }
}

现在使用latLngBoundsBuilder.build()获得一个LatLngBounds对象。 然后实现setOnCameraIdleListener并在onCameraIdle内部检查google map center是否在该范围内

latLngBounds.contains(map.getCameraPosition().target)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM