This module can convert ESRI style definition to OpenLayers style function. ESRI style definition must be in JSON format - https://developers.arcgis.com/documentation/common-data-types/renderer-objects.htm
Import as ES6 module:
import { createStyleFunctionFromUrl } from 'ol-esri-style';
// create a new vector layer
const vector = new VectorLayer({
...
});
// set layer style
// Passing the projection is need for labeling features. Visible resolutions for
// the labels are calculated using map projection units.
createStyleFunctionFromUrl('arcgis_server_layer_url', map.getView().getProjection()).then(styleFunction => {
vector.setStyle(styleFunction);
});
You can modify the styles before applying them to the features:
// set layer style
createStyleFunctionFromUrl('arcgis_server_layer_url').then(styleFunction => {
vector.setStyle((feature, resolution) => {
const styles = styleFunction(feature, resolution);
// modify styles
return styles;
});
});
To check the example stored in /example
directory run:
npm run dev
The example loads data from https://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Petroleum/KSFields/FeatureServer/0 and the style definition is from https://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Petroleum/KSFields/FeatureServer/0?f=json.
The MIT License (MIT).