【问题标题】:Google Maps Android get LatLng array of points from GeoJsonFeatureGoogle Maps Android 从 GeoJsonFeature 获取 LatLng 点数组
【发布时间】:2018-03-02 18:28:03
【问题描述】:

单击作为 geojson 功能的线时,如何获取点列表?我需要访问每条线的各个点吗?这不起作用:lineStringFeature.getPolylineOptions().getPoints()。非常感谢。

// Set a listener for geometry clicked events.
layer.setOnFeatureClickListener(new GeoJsonLayer.OnFeatureClickListener() {
    @Override
    public void onFeatureClick(Feature feature) {
        GeoJsonFeature lineStringFeature;
        GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle();
        lineStringFeature = (GeoJsonFeature) feature;
        lineStringStyle.setColor(Color.GREEN);
        lineStringStyle.setZIndex(10f);
        lineStringStyle.setWidth(6f);
        lineStringFeature.setLineStringStyle(lineStringStyle);

        // this doesn't work how do you get an array of LatLngs
        lineStringFeature.getPolylineOptions().getPoints().get(0);
    }
}

【问题讨论】:

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


    【解决方案1】:

    GeoJsonFeature 对象有一个 getGeometry() 方法返回几何(如果你确定类型,你可以将它转换为 GeoJsonLineString),GeoJsonLineString 对象有一个 getCoordinates() 方法返回带有坐标的List<LatLng>

    if ("LineString".equalsIgnoreCase(lineStringFeature.getGeometry().getType())) {
        List<LatLng> coordinates = ((GeoJsonLineString) lineStringFeature.getGeometry()).getCoordinates();
        // Do something with the coordinates
    } else if ("MultiLineString".equalsIgnoreCase(lineStringFeature.getGeometry().getType())) {
        for (GeoJsonLineString linestring : ((GeoJsonMultilineString) lineStringFeature.getGeometry()).getLineStrings()) {
            List<LatLng> coordinates = linestring.getCoordinates();
            // Do something with the coordinates. Take into account that one MultiLinestring is composed of several Linestrings
        }
    }
    

    【讨论】:

    • 对不起,我收到错误:java.lang.ClassCastException: com.google.maps.android.data.geojson.GeoJsonMultiLineString 无法转换为 com.google.maps.android.data.geojson。 GeoJsonLineString。那么它是多线串吗?我该如何处理?我只需要单击时每条折线的开始和结束 LatLng 即可添加标记。谢谢!
    • 您可以遍历您的MultiLineStringLinesStrings。检查我编辑的答案
    • 它似乎无法识别您 for 循环中的 getType() 或“in”。
    • 已修复,立即查看
    • 效果很好!谢谢!如果您有机会并且可以看看我的其他问题,我将不胜感激。我来自 javascript api,在适应 android api 时遇到了一些麻烦。 stackoverflow.com/questions/49036467/…
    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 2011-07-31
    • 1970-01-01
    • 2016-10-04
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多