Как заполнить цветной полигон дополнительной линией в слое GeoJSON? - PullRequest
0 голосов
/ 04 октября 2019

Я новичок со слоем GeoJson в Android. Я хочу нарисовать полигоны с заливкой цветом на слое GeoJson. Проблема в том, что я не могу залить цвет в многоугольнике дополнительной линией на слое GeoJson.

Вот мой код.

 heatMapLayer = GeoJsonLayer(map,  [2]JSONObject(Gson().toJson(featureCollection)))
        heatMapLayer?.features?.forEach {
            var colorIndex = it.getProperty("temp").toDouble().toInt()
            if (colorIndex < -10) {
                colorIndex = -10
            }
            if (colorIndex > 40) {
                colorIndex = 40
            }
            val polygonStyle = GeoJsonPolygonStyle()
            polygonStyle?.fillColor = Utils.hex2ARgb(170, Constants.heatMapColor[colorIndex] ?: error(""))
            polygonStyle?.strokeWidth = 0f
            it.polygonStyle = polygonStyle
            val pointStyle = GeoJsonPointStyle()
            pointStyle.isDraggable = true
            it.pointStyle = pointStyle
        }

Я хочу показать все многоугольники с цветами.

Вот пример данных GeoJson.

{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"temp": 28.0,"defaultUnit": "А ° С"}, "геометрии": { "Тип": "Многоугольник", "координаты": [[[+106,70791799658124, 10,575534789370789], [106,707923201947, +10,539230085503078], [+106,75196848603105, +10,514232576383892], [+106,79601377011508, +10,539230085503078], [+106,7960209392707, 10,589231196662963], [+106,76782493975878, +10,605234887615962], [+106,76111674178632, 10,601428713580317], [+106,76111586436221, +10,595343333584946], [+106,71706253230332, +10,570345841048965], [+106,70791799658124, +10,575534789370789]]]}}, { "Тип": "Feature "," properties ": {" temp ": 28.0," defaultUnit ":" ° C "}," geometry ": {" type ":" Polygon "," координировать ": [[[106.74952463777162, 10.594851453114759], [106.76782493975878, 10.605234887615964], [106.76111783947686, 10.609041752489026], [106.76111674178633, 10.601428713580317], [106.749524 * 1011] * 101 * 1010] 1010] 1010] 1010] 1010] 1010] 1010, 1148}, 1015, 1130], 1015, 1125, 211, 11), 211, 211, 15], 211, 211, 21], 211, 211, 21], 211, 211, 211, 10], 1010], 1015], 1015, 10], 151, 10-й, 10-й, 10-й. 1013 *

1 Ответ

0 голосов
/ 04 октября 2019

попробуйте

heatMapLayer = new GeoJsonLayer(googleMap, new JSONObject(airMapGeoJsonLayer.geoJson));
  GeoJsonPolygonStyle style = heatMapLayer.getDefaultPolygonStyle();
  style.setStrokeColor(airMapGeoJsonLayer.strokeColor);
  style.setStrokeWidth(airMapGeoJsonLayer.strokeWidth);
  style.setFillColor(airMapGeoJsonLayer.fillColor);
  heatMapLayer .addLayerToMap();

или вы тоже можете попробовать

GeoJsonPolygonStyle polyStyle = layer.getDefaultPolygonStyle();
polyStyle.setFillColor(FILL_GREY);
polyStyle.setStrokeColor(STROKE_GREY);
polyStyle.setStrokeWidth(4f);
...