У меня есть векторный слой 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)));
это не работает, любая помощь высоко ценится.