【问题标题】:Android Google Maps GeoJsonLayer OnFeatureClickListener, multiple layersAndroid Google Maps GeoJsonLayer OnFeatureClickListener,多层
【发布时间】:2017-10-16 10:56:39
【问题描述】:

请查看我的代码以从 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);

问题:当我点击标记或 pologon 时,总是显示取自第二个 json (json2) 的描述,即使我点击第一层上从第一个 json 创建的对象。

怎么了?有什么想法吗?

【问题讨论】:

    标签: android google-maps onclick geojson layer


    【解决方案1】:

    如果您查看文档中的 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

    【讨论】:

    • 是的,它已经想通了。我终于设法将所有对象添加到单层,而我的地图只包含一个单层。
    • 如何仅使用一个 GeoJson 管理单个功能的点击?当功能重叠时,我遇到了问题。
    • 简而言之,我设法从我拥有的所有 geojson 中提取了所有特征。然后,将所有提取的要素添加到我的地图上的单个图层并为每个要素设置点击侦听器
    • 如何在地图上单层添加多个json文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多