Изменение значков маркеров в векторном слое ESRI на основе значений атрибутов

У меня есть векторный слой esri с несколькими атрибутами.

мне нужно установить разные значки для своего маркера на основе одного из значений атрибута,

возможно ли иметь несколько средств визуализации для одного и того же слоя на основе некоторого кода?

это то, что я пробовал

QueryParameters parameters = new QueryParameters();
    parameters.setWhere("1=1");
    parameters.setReturnGeometry(true);
    parameters.setOutFields(mHafilatLayerOptions.outFields);
    parameters.setOutSpatialReference(_mapView.getSpatialReference());

    try {
        QueryTask queryTask = new QueryTask(mHafilatLayer.getUrl(),Utilities.getUserCredentials());
        queryTask.execute(parameters, new CallbackListener<FeatureResult>() {
            @Override
            public void onCallback(FeatureResult objects) {
                for (Object currentElem : objects) {
                    if (currentElem instanceof Feature) {
                        Feature currentFeature = (Feature) currentElem;

                        Point point = GeometryEngine.project(((Point)currentFeature.getGeometry()).getX(),
                                ((Point)currentFeature.getGeometry()).getY(), _mapView.getSpatialReference());
                        String deviceType = (String) currentFeature.getAttributes().get("DEVICE");

                        switch (deviceType) {
                            case "TVM":
                                mHafilatLayer.addGraphic(new Graphic(point,Utilities.createPictureMarkerSymbol(getPointOfInterestIcon(AppConstants.LayerConstants.PARKING_HANDICAP, true),false)));
                                break;
                            case "BBR":
                                mHafilatLayer.addGraphic(new Graphic(point,Utilities.createPictureMarkerSymbol(getPointOfInterestIcon(AppConstants.LayerConstants.HafilatKiosks, true),false)));
                                break;
                            case "TOM":
                                mHafilatLayer.addGraphic(new Graphic(point,Utilities.createPictureMarkerSymbol(getPointOfInterestIcon(AppConstants.LayerConstants.HafilatKiosks, true),false)));
                                break;
                            default:
                                mHafilatLayer.addGraphic(new Graphic(point,Utilities.createPictureMarkerSymbol(getPointOfInterestIcon(AppConstants.LayerConstants.HafilatKiosks, true),false)));
                        }
                    }
                }
            }

            @Override
            public void onError(Throwable throwable) {

            }
        });
    } catch (EsriSecurityException e) {
        e.printStackTrace();
    } 
    mHafilatLayer.setRenderer(new SimpleRenderer(Utilities.createPictureMarkerSymbol(getPointOfInterestIcon(AppConstants.LayerConstants.HafilatKiosks, true), false)));

это не работает, любая помощь приветствуется.


person al_mukthar    schedule 03.07.2018    source источник


Ответы (1)


Установить различные значки для своего маркера на основе одного из значений атрибута - возможно Да.

В ArcGIS есть возможность рендеринга на основе атрибута в векторном слое, например: модуль рендеринга уникальных значений.

Перейдите по ссылке: https://developers.arcgis.com/android/latest/guide/symbols-and-renderers.htm#ESRI_SECTION1_93757B8F4FBF45CB8D0ED7DCCE53D929

person Anoop J    schedule 10.07.2018