【问题标题】:Specify an area on Google Map as support area - Google Maps Android Api在谷歌地图上指定一个区域作为支持区域 - Google Maps Android Api
【发布时间】:2018-03-05 06:59:59
【问题描述】:

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

在 JavaScript 中,有一个 kmlLayer 和一个侦听器,用于查找 kmllayer 点击。这样我就得到了点击点的经纬度。

但是在 android 中只有一个 kmlLayer 的 setOnFeatureClickListener 侦听器,(Google Map Android kmlLayer Documentation) 我想用一个 kml 多边形显示我的区域,并让它可点击或获取图层点击点的纬度和经度。

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

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

我也为我的英语不好道歉,我认为我的解释很清楚如果你不这么认为,请评论,我会解释更多!

【问题讨论】:

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


    【解决方案1】:

    首先你应该创建一个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 内部检查谷歌地图中心是否在该范围内

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

    【讨论】:

    • 谢谢你:D,你为我们节省了很多时间。我欠你一个。
    猜你喜欢
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2015-01-31
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多