根据属性值更改 ESRI 要素层中标记的图标

Changing icons for markers in a ESRI feature layer based on attribute values

我有一个包含多个属性的 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)));

这不起作用,非常感谢任何帮助。

根据其中一个属性值为其标记设置不同的图标 - 可以。

ArcGIS 可以根据要素层中的属性进行渲染,例如:唯一值渲染器

查看 link :https://developers.arcgis.com/android/latest/guide/symbols-and-renderers.htm#ESRI_SECTION1_93757B8F4FBF45CB8D0ED7DCCE53D929