当前位置: 首页 > 知识库问答 >
问题:

将GeoJson转换为mapbox多边形对象(Android)

景康安
2023-03-14

我有一个来自服务器的json响应,其中包含GeoJson格式的多边形信息,如下所示:

{
"status": "success",
"location": {
                "type": "Polygon",
                "coordinates": [
                    [
                        [
                            50.83657264709473,
                            35.602881307254144
                        ],
                        [
                            50.86541175842285,
                            35.602881307254144
                        ],
                        [
                            50.86541175842285,
                            35.61676761271693
                        ],
                        [
                            50.83657264709473,
                            35.61676761271693
                        ],
                        [
                            50.83657264709473,
                            35.602881307254144
                        ]
                    ]
                ]
            }
}

现在我想将此json转换为mapbox多边形,我正在使用gson转换器进行改装,以从服务器接收响应:

@GET("example.com")
    Call<MyResponse> getAll();
import com.mapbox.geojson.Polygon;
public class MyResponse {
    private String status;
    private Polygon location;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Polygon getLocation() {
        return location;
    }

    public void setLocation(Polygon location) {
        this.location = location;
    }
}

,但是我有这个错误:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at path $.location.coordinates[0][0]

我怎样才能解决这个问题?

共有1个答案

傅翰池
2023-03-14

服务器的JSON响应结构与代码预期的不一样,因此会出现上述错误。

根据POJO类点(此处给出),JSON响应的结构应该如下所示:

{
   "status": "success",
   "location": {
                "type": "Polygon",
                "coordinates": [
                    [
                        { type: "String",
                          coordinates: [50.86541175842285,
                            35.61676761271693]
                        }
                    ]
                ]
            }
}
 类似资料:
  • 我正在使用geoJSON在Android MapBox中显示一个形状。在geoJSON中,我有很多多边形,每个多边形在“属性”JSONObject中都有一个值,下面是一个示例: 我想根据值用特定颜色填充多边形。 我应该怎么做来给形状上色? 在JSON中为“poperties”对象添加一个“fill”值?(还没有为我工作。) 手动解析JSON并在“PolygonOptions”对象中使用“fillC

  • 我需要在Mapbox Android SDK地图上绘制一个带孔的GeoJSON多边形。 正如GeoJSON规范所说, 对于类型“多边形”,“坐标”成员必须是线性环坐标数组的数组。对于有多个环的多边形,第一个必须是外环,其他必须是内环或孔。 在手册Mapbox JS和Mapbox GL JS中,加载GeoJSONs由库本身处理。从这把小提琴中可以看出,lib考虑了内环,因此正确地绘制了孔。 当我查看

  • 问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答

  • 我正试图将下面的json转换成java bean,需要你的帮助 Sort.json 我的豆子看起来像 我的测试课是 我看到的错误是 请建议:

  • 我有一个“SpatialPolygons”对象,我想在@hole==FALSE处对多边形进行子集,并创建一个新对象。 使用下面的代码,一次可以预测得到1个多边形(如果@hole==TRUE,则没有),但我无法从对象中分割多个多边形。 我认为我的问题在于我不知道如何“一般”引用第二个列表,即从列表(Polygon)中获取项目,其中@孔==FALSE。将第二个[[]]留空不起作用。 附言:抱歉,没有可

  • 有些地理区域是围绕一个主要大都市的区域,其中每个都是一个不同的行政区。瑞士(事实上)和巴西的首都就是这种情况。 这些区域的GeoJSON数据定义为几何类型多边形或多边形。但在这两种情况下,当命令 启动,以便几何形状可以作为文本返回并存储在postGIS中 将生成以下错误: 我把它解释为多边形没有闭合。是的,但有皱纹。 一个人怎么处理这个有环有环的环?