Would someone be so kind and explain the usage of the implementation of ArcGISLocalDynamicMapServiceLayer?If you want to use dynamic workspaces with the ArcGIS Runtime SDK for Java 10.1.1 you have to use the ArcGISDynamicMapServiceLayer implementation e.g. for adding shapefiles or local geodatabases. Trying to use an instance of ArcGISLocalDynamicMapServiceLayer will fail. No exception is be thrown, instead the LayerStatus is ERRORED and Layer::getInitializationError returns "WARNING: The filename, directory name, or volume label syntax is incorrect" after the layer initialize complete event was fired. ArcGISLocalDynamicMapServiceLayer extends directly from ArcGISDynamicMapServiceLayer, but behaves different using dynamic workspaces.Is it correct that ArcGISLocalDynamicMapServiceLayer is only used for dynamic layers directly pointing to an existing map package?When I was using ArcGIS Runtime SDK for WPF 10.1 using an instance of ArcGISLocalDynamicMapServiceLayer for dynamic workspaces worked as expected. But you had to specify a LocalMapServer instance not the corresponding URL.
arcGisLocalDynamicMapServiceLayer = new ArcGISLocalDynamicMapServiceLayer(localMapService)
Works:
private List<ArcGISDynamicMapServiceLayer> createLocalDynamicLayers(LocalMapService localMapService, WorkspaceInfoSet dynamicWorkspaces) {
List<ArcGISDynamicMapServiceLayer> localLayerList = new ArrayList<>(dynamicWorkspaces.size());
for (final WorkspaceInfo dynamicWorkspace : dynamicWorkspaces) {
ArcGISDynamicMapServiceLayer mapServiceLayer = new ArcGISDynamicMapServiceLayer(localMapService.getUrlMapService());
mapServiceLayer.addLayerInitializeCompleteListener(new LayerInitializeCompleteListener() {
@Override
public void layerInitializeComplete(LayerInitializeCompleteEvent e) {
logger.info(bundle.getString("LocalDataLoader.info.localDynamicLayerInitialized"));
ArcGISDynamicMapServiceLayer localDynamicLayer = (ArcGISDynamicMapServiceLayer) e.getLayer();
LayerStatus status = localDynamicLayer.getStatus();
if (LayerStatus.INITIALIZED != status) {
logger.severe(String.format(bundle.getString("LocalDataLoader.error.localDynamicLayerUninitialized"), localDynamicLayer.getUrl()));
String initializationError = localDynamicLayer.getInitializationError();
logger.warning(initializationError);
return;
}
Fails:
private List<ArcGISDynamicMapServiceLayer> createLocalDynamicLayers(LocalMapService localMapService, WorkspaceInfoSet dynamicWorkspaces) {
List<ArcGISDynamicMapServiceLayer> localLayerList = new ArrayList<>(dynamicWorkspaces.size());
for (final WorkspaceInfo dynamicWorkspace : dynamicWorkspaces) {
ArcGISDynamicMapServiceLayer mapServiceLayer = new ArcGISLocalDynamicMapServiceLayer(localMapService.getUrlMapService());
mapServiceLayer.addLayerInitializeCompleteListener(new LayerInitializeCompleteListener() {
@Override
public void layerInitializeComplete(LayerInitializeCompleteEvent e) {
logger.info(bundle.getString("LocalDataLoader.info.localDynamicLayerInitialized"));
ArcGISDynamicMapServiceLayer localDynamicLayer = (ArcGISDynamicMapServiceLayer) e.getLayer();
LayerStatus status = localDynamicLayer.getStatus();
if (LayerStatus.INITIALIZED != status) {
logger.severe(String.format(bundle.getString("LocalDataLoader.error.localDynamicLayerUninitialized"), localDynamicLayer.getUrl()));
String initializationError = localDynamicLayer.getInitializationError();
logger.warning(initializationError);
return;
}
Thanks in advance