Class ArcGISMapImageSublayer

  • All Implemented Interfaces:
    RemoteResource, LayerContent, Loadable, PopupSource

    public final class ArcGISMapImageSublayer
    extends ArcGISSublayer
    Represents a sublayer of an ArcGISMapImageLayer.

    Gives read only access to the sublayer's metadata. Can also be used to change the way the layer is drawn in the map by changing its renderer and data source. The sub layer's visibility and opacity can also be changed.

    The code below shows how to get ArcGISMapImageSublayers from an ArcGISMapImageLayer, and how to change a property of a sublayer after loading.

     String mapServiceUSA = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer";
     final  ArcGISMapImageLayer mapImageLayer = new ArcGISMapImageLayer(mapServiceUSA);
    
     mapImageLayer.addDoneLoadingListener(() -> {
       if (mapImageLayer.getLoadStatus() == LoadStatus.LOADED) {
         ListenableList<ArcGISSublayer>  sublayerList = mapImageLayer.getSublayers();
         ArcGISMapImageSublayer mapImageSublayer = (ArcGISMapImageSublayer) sublayerList.get(0);
         mapImageSublayer.setName("New Name");
       }
     });
     mapImageLayer.loadAsync();
     
    Setting properties on a ArcGISMapImageSublayer before the ArcGISMapImageLayer is loaded will not overwrite those properties.
    Since:
    100.0.0
    See Also:
    ArcGISMapImageLayer
    • Constructor Detail

      • ArcGISMapImageSublayer

        public ArcGISMapImageSublayer​(int id)
        Creates a new ArcGISMapImageSublayer with the given ID. The ID should be zero or greater.
        Parameters:
        id - the ID of the new sub layer, should be zero or greater
        Throws:
        IllegalArgumentException - if id is less than zero
        Since:
        100.0.0
      • ArcGISMapImageSublayer

        public ArcGISMapImageSublayer​(int id,
                                      SublayerSource sublayerSource)
        Creates a new ArcGISMapImageSublayer with the given ID and sublayer source. The ID should be zero or greater and the sublayer source cannot be null. For sublayer sources other than rasters, a Renderer must be set using setRenderer(Renderer).
        Parameters:
        id - the ID of the new sub layer, should be zero or greater
        sublayerSource - the source of the new sublayer
        Throws:
        IllegalArgumentException - if id is less than zero
        IllegalArgumentException - if sublayer source is null
        Since:
        100.1.0
    • Method Detail

      • setOpacity

        public void setOpacity​(float opacity)
        Sets the opacity for this sublayer.
        Parameters:
        opacity - the opacity of this layer, which needs to be a value in the range of 0.0 - 1.0, 1.0 being fully opaque
        Throws:
        IllegalArgumentException - if the opacity is out of range
        Since:
        100.1.0
        See Also:
        ArcGISSublayer.getOpacity()
      • setScaleSymbols

        public void setScaleSymbols​(boolean scaleSymbols)
        Sets whether the text and symbols on this sublayer will change as the map scale varies.
        Parameters:
        scaleSymbols - true if the text and symbols should change as the map scale varies, false otherwise
        Since:
        100.1.0
        See Also:
        ArcGISSublayer.canScaleSymbols()
      • setMaxScale

        public void setMaxScale​(double maxScale)
        Sets the maximum scale for this sublayer.
        Parameters:
        maxScale - the maximum scale
        Since:
        100.1.0
        See Also:
        ArcGISSublayer.getMaxScale()
      • setMinScale

        public void setMinScale​(double minScale)
        Sets the minimum scale for this sublayer.
        Parameters:
        minScale - the minimum scale
        Since:
        100.1.0
        See Also:
        ArcGISSublayer.getMinScale()
      • setLabelsEnabled

        public void setLabelsEnabled​(boolean labelsEnabled)
        Sets whether or not labels are enabled for this sublayer
        Parameters:
        labelsEnabled - true to enable labels, false otherwise
        Since:
        100.1.0
        See Also:
        ArcGISSublayer.isLabelsEnabled()
      • setDefinitionExpression

        public void setDefinitionExpression​(String definitionExpression)
        Sets the definition expression for this sublayer - can be null. The definition expression is an SQL statement where clause to filter out the features to be displayed.
        Parameters:
        definitionExpression - the definition expression
        Since:
        100.1.0
        See Also:
        ArcGISSublayer.getDefinitionExpression()
      • getSource

        public SublayerSource getSource()
        Returns the sublayer's source if available otherwise null.
        Returns:
        the sublayer's source
        Since:
        100.1.0
      • setName

        public void setName​(String name)
        Sets the name property for this sublayer.
        Parameters:
        name - the new name for this sublayer, can be null
        Since:
        100.0.0
      • copy

        public ArcGISMapImageSublayer copy()
        Creates a deep copy of this ArcGISMapImageSublayer instance.
        Specified by:
        copy in class ArcGISSublayer
        Returns:
        a deep copy of this ArcGISMapImageSublayer instance, which means that copies of all fields of this layer are made including its loading state
        Since:
        100.1.0
      • getLabelDefinitions

        public List<LabelDefinition> getLabelDefinitions()
        Gets a modifiable list of label definitions of this sublayer.
        Returns:
        a modifiable list of label definitions
        Since:
        100.1.0