Select to view content in your preferred language

Adding a shap file to a dynamic layer

2087
1
07-20-2012 12:27 PM
arnaudferrand
New Contributor II
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 help
Arno
0 Kudos
1 Reply
Jan-Tschada
Esri Contributor
Regarding to How-to-use-dynamic-workspaces-correctly. Adding a shapefile should work with the next release.

Happily announced here: Coming up in ArcGIS Runtime SDKs 10.1.1 a lot.
Product Manager
Developers and Location Services
Germany and Switzerland
0 Kudos