Как получить значение цвета из списка List <Feature>? - PullRequest
1 голос
/ 18 марта 2020

Я указал цвета object2.addProperty("marker-colors", "#ffbf00"); в json, чтобы затем получить значение. withImage(ICON_ID, createBitMap(get("marker-color")))

Я буду использовать значение цвета в createBitmap (...)

здесь мой код

List<Feature> features = new ArrayList<>();

        JsonObject object1 = new JsonObject();
        object1.addProperty("title", "TEST1");
        object1.addProperty("marker-color", "#c70024");
        features.add(Feature.fromGeometry(
                Point.fromLngLat(106.535033, -6.323488), object1));

        JsonObject object2 = new JsonObject();
        object2.addProperty("title", "TEST2");
        object2.addProperty("marker-color", "#ffbf00");
        features.add(Feature.fromGeometry(
                Point.fromLngLat(106.897423, -6.277078), object2));

        JsonObject object3 = new JsonObject();
        object3.addProperty("title", "TEST3");
        object3.addProperty("marker-color", "#00c753");
        features.add(Feature.fromGeometry(
                Point.fromLngLat(106.797217, -6.171958), object3));

затем

mapboxMap.setStyle(new Style.Builder().fromUri(CPN_STYLE)
                .withSource(new GeoJsonSource(SOURCE_ID,
                        FeatureCollection.fromFeatures(features)))
                .withImage(ICON_ID, createBitMap(get("marker-color")))
                .withLayer(new SymbolLayer(LAYER_ID, SOURCE_ID)
                        .withProperties(
                                textField(get("title")),
                                iconImage(ICON_ID),
                                textSize(14f),
                                iconAllowOverlap(true),
                                iconIgnorePlacement(true),
                                textColor(get("marker-color")),
                                textJustify(TEXT_JUSTIFY_AUTO),
                                iconOffset(new Float[]{0f, -9f}))
                ), style -> {

            mapboxMap.animateCamera(CameraUpdateFactory.newCameraPosition(
                                new CameraPosition.Builder()
                                        .target(new LatLng(-6.323488, 106.535033))
                                        .zoom(7)
                                        .build()), 1000);

        });

Ответ будет очень полезным. Спасибо

1 Ответ

3 голосов
/ 18 марта 2020

Вы можете сделать следующее вместо использования JsonObject s

Feature singleFeature = Feature.fromGeometry(Point.fromLngLat(LONG,LAT));
singleFeature.addStringProperty("title", "TEST1");
singleFeature.addStringProperty("marker-color", "#c70024");
features.add(singleFeature);

Как выглядит метод createBitmap() под капотом?

Возможно, вы захотите использовать Карты SDK MapView.OnStyleImageMissingListener и внимательно следите за тем, что сделано в https://docs.mapbox.com/android/maps/examples/missing-icon/.

  1. Не используйте .withImage() при настройке SymbolLayer.

  2. Это будет .iconImage(get("marker-color")), для вашего SymbolLayer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...