功能单击侦听器问题 android GeoJsonLayer

Arp*_*pan 5 android google-maps geojson google-maps-android-api-2

您好,我正在使用 google map android api,我正在使用 google maps android geojson 实用程序。我在地图中添加了 3 层 geojson,只有road_layer (LineString) 有特征点击事件。在我添加samsad_boundary_layer(多边形)之前,单击事件工作正常。问题是如果samsad_boundary_layer要素被点击,它会触发road_layer要素点击事件,尽管图层(samsad_boundary_layer)没有要素点击事件。

private void showBoundery(){
    try {
        samsad_boundary_layer=new GeoJsonLayer(mMap,R.raw.samsad_boundary,MapActivity.this); //1st Layer
    } catch (IOException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    samsad_boundary_layer.getDefaultPolygonStyle().setZIndex(-12f);
    GeoJsonPolygonStyle polygonStyle=samsad_boundary_layer.getDefaultPolygonStyle();
    polygonStyle.setStrokeWidth(5f);
    polygonStyle.setStrokeColor(getResources().getColor(R.color.purple));
    samsad_boundary_layer.addLayerToMap();
}

private void retrieveFileFromResource() {
    try {
        temp_layer=new GeoJsonLayer(mMap,R.raw.area_survey,this); //2nd Layer
        temp_layer.addLayerToMap();
        road_layer=new GeoJsonLayer(mMap,R.raw.road_survey,this); //3rd Layer
        road_layer.setOnFeatureClickListener(new Layer.OnFeatureClickListener() {
            @Override
            public void onFeatureClick(Feature feature) {
                if (feature!=null){
                    Iterator<HashMap> flavoursIter = feature.getProperties().iterator();
                   while (flavoursIter.hasNext()){
                        Map.Entry entry = (Map.Entry)flavoursIter.next();
                        //Log.v("SURVEYOR_FEATURE",entry.getKey().toString()+":"+entry.getValue());

                    }

                }
            }
        });
        GeoJsonLineStringStyle lineStyle=road_layer.getDefaultLineStringStyle();
        lineStyle.setZIndex(10f);
        lineStyle.setWidth(2f);
        lineStyle.setColor(getResources().getColor(R.color.light_green));
        road_layer.addLayerToMap();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

Vij*_*jay 0

不要在地图上单独添加 3 个图层,而是遍历所有图层并创建单个图层。然后将图层添加到地图并设置要素单击侦听器。相应地处理 onFeatureClick。