Hi,I am trying with the Runtime SDK fo Java to use the new feature with dynamic layers : removing and adding dynamically a layer to mapservice. I had a dot.net WPF sample that works fine with runtime for dotnet. But trying to do the same thing with java does not work. Where do you think I am wrong ?I use the LocalDynamicMapLayer.java from the SDK sample. I removed the dynamic layer from the createMap method and add a new method called after createMap
private void createLayers() {
String mpkFile = "C:/Program Files/ArcGIS SDKs/Java1.0/SDK/Samples/Data/MPKs/USCitiesStates_Lambert_Conformal_Conic.mpk";
final LocalMapService localMapService = new LocalMapService(mpkFile);
localMapService.setEnableDynamicLayers(true);
WorkspaceInfo wi = new WorkspaceInfo("shapeworkspace", WorkspaceFactoryType.SHAPE_FILE, "DATABASE=C:\\Data"); //
localMapService.getDynamicWorkspaces().add(wi);
localMapService.addLocalServiceStartCompleteListener(new LocalServiceStartCompleteListener() {
@Override
public void localServiceStartComplete(LocalServiceStartCompleteEvent evt) {
System.out.println("LocalServiceStartCompleteEvent!!");
final ArcGISDynamicMapServiceLayer dynMapLayer = new ArcGISDynamicMapServiceLayer(localMapService.getUrlMapService());
dynMapLayer.addLayerInitializeCompleteListener(new LayerInitializeCompleteListener() {
@Override
public void layerInitializeComplete(
LayerInitializeCompleteEvent e) {
System.out.println("LayerInitializeCompleteEvent!!");
TableDataSource tableDataSrc = new TableDataSource();
tableDataSrc.setWorkspaceId("shapeworkspace");
tableDataSrc.setDataSourceName("lake.shp");
LayerDataSource layerSource = new LayerDataSource();
layerSource.setDataSource(tableDataSrc);
DynamicLayerInfo dlInfo = new DynamicLayerInfo(100);
dlInfo.setLayerSource(layerSource);
DynamicLayerInfoCollection dynInfos = dynMapLayer.getDynamicLayerInfos();
dynInfos.add(dlInfo);
dynMapLayer.setDynamicLayerInfos(dynInfos);
dynMapLayer.refresh();
listLayers(dynMapLayer);
}
private void listLayers(final ArcGISDynamicMapServiceLayer dl) {
DynamicLayerInfoCollection dynamicLayerInfos = dl.getDynamicLayerInfos();
for (Iterator<DynamicLayerInfo> iterator = dynamicLayerInfos.iterator(); iterator.hasNext();) {
DynamicLayerInfo dynamicLayerInfo = iterator.next();
try {
System.out.println(dynamicLayerInfo.toJson());
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
System.out.println("enable workspace :" + localMapService.getEnableDynamicLayers());
map.getLayers().add(dynMapLayer);
}
});
localMapService.startAsync();
}
The list map layers result is only :{"id":0,"source":{"type":"MAPLAYER","mapLayerId":0,"version":""}}
{"id":1,"source":{"type":"MAPLAYER","mapLayerId":1,"version":""}}
{"id":2,"source":{"type":"MAPLAYER","mapLayerId":2,"version":""}}
Really thanks for your helpArno