Android Google Maps GeoJsonLayer OnFeatureClickListener,多个图层

问题描述 投票:1回答:1

请查看我的代码以从geojson字符串创建图层并将图层添加到地图:

private GeoJsonLayer createLayerFromGeojson(String json)
    {
        JSONObject ob = null;

        try
        {
            ob = new JSONObject(json);
        }
        catch (JSONException e)
        {
            e.printStackTrace();
        }

        GeoJsonLayer layer = new GeoJsonLayer(googleMap, ob);
        layer.addLayerToMap();

        layer.setOnFeatureClickListener(feature -> Utils.showMessage(getActivity(), "Clicked", feature.getProperty("description").toString()));

        return layer;
    }

接下来添加2个图层来映射:

String json = /*first geojson string here*/
String json2 = /*another geojson string here*/

createLayerFromGeojson(json);
createLayerFromGeojson(json2);

问题:当我单击标记和多边形时,即使我在第一层上单击从第一个json创建的对象,也会显示从第二个json(json2)获取的描述。

怎么了?有任何想法吗?

android google-maps onclick geojson layer
1个回答
2
投票

如果你查看方法setOnFeatureClickListener的文档,它说:

为整个GoogleMap对象设置单击侦听器,当单击地图上的对象(多边形,标记,折线)时,将使用相应的Feature对象调用该侦听器。

对我而言,我们不能拥有来自不同GeoJson的信息的多个层,这似乎很愚蠢。它需要是MultiPolygon,MultiLineString或MultiPoint。

参考:https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/data/Layer.java#L89

© www.soinside.com 2019 - 2024. All rights reserved.