从MapBox Android SDK中的geoJSON着色多边形形状

时间:2016-12-16 11:01:19

标签: android mapbox geojson

我使用geoJSON在Android MapBox中显示形状。 在geoJSON中,我有很多多边形,每个多边形都具有"属性" JSONObject,这是一个例子:

{
"geometry": {
    "type": "Polygon",
    "coordinates": [
        [
            [
                2.3303745,
                39.841098
            ],
            [
                2.3303464,
                39.8410976
            ],
            [
                2.3303261,
                39.8411054
            ]
        ]
    ]
},
"type": "Feature",
"properties": {
    "value": 169
}
}

我想根据值填充具有特定颜色的多边形。

我目前正在做什么并获得

GeoJsonSource geoJsonSource = new GeoJsonSource("geojson",stringbuilder.toString());
mapboxMap.addSource(geoJsonSource);
mapboxMap.addLayer(new FillLayer("geojson", "geojson"));

What I get

问题

我该怎样做才能为形状着色?

  1. 添加JSON a"填充"价值" poperties"宾语? (但我还没有为我工作。)
  2. 手动解析JSON并使用" fillColor"函数" PolygonOptions"宾语? (会增加很多工作,因为有很多多边形)
  3. 我想要什么

    What I want

2 个答案:

答案 0 :(得分:1)

if (duplicates.Contains(myObject.sFolder)) // "myObject.sFolder" raise an error (of course)
{
    // Do stuff
}

在我的AsyncTask的postExecute函数中:

JSONArray features = json.getJSONArray("features");

//Get the value for each features and create geojsonsource
for (int i = 0; i < features.length(); i++) {
    JSONObject feature = features.getJSONObject(i);
    Double value=-1.0;

    if (feature != null) {
        JSONObject properties = feature.getJSONObject("properties");
        if (properties != null && properties.has("value")) {
            value = properties.getDouble("value");
        }
        GeoJsonSource geoJsonSource = new GeoJsonSource("geojson" + i, feature.toString());

        if (!values.contains(value))
            values.add(value);
        list_value_geojson.add(new AbstractMap.SimpleEntry<>(value, geoJsonSource));
    }
}

答案 1 :(得分:0)

在数据驱动样式到达下一版本之前,您需要为每种颜色创建单独的图层并将它们叠加在一起。与您的想法相反,这不应该妨碍性能,只需要更多的工作:)