All Implemented Interfaces:
Styleable, EventTarget, Skinnable
Direct Known Subclasses:
MapView, SceneView

public abstract class GeoView extends Control
A base class for all views that can display geographic content.

Subclasses can display the content in either 2D (MapView) or 3D (SceneView); these derived classes must only be created and used on the UI thread. In an MVC architecture, this class and its subclasses represent the View tier. The Model tier is represented by GeoModel, which supplies the geographic content as a map (ArcGISMap) or a scene (ArcGISScene).

GeoView contains all the common operations and events that apply to displaying and working with maps and scenes. For example, you can change the viewable area by setting a Viewpoint, work with graphics in the GraphicsOverlay, and identify a GeoElement that displays in the view.

Since:
100.0.0
  • Property Details

  • Method Details

    • createDefaultSkin

      protected Skin<?> createDefaultSkin()
      Overrides:
      createDefaultSkin in class Control
    • attributionTopProperty

      public ReadOnlyDoubleProperty attributionTopProperty()
      Returns a read-only property containing the distance from the top of the view to the top of the attribution text. This can be used to position nodes on the view such that they don't obscure the attribution. If the attribution text is not visible then the value will be the distance from the top of the view to the bottom of the displayed map or scene. You can check the visibility of the attribution text with attributionTextVisibleProperty().
      Returns:
      the attribution top property
      Since:
      100.1.0
      See Also:
    • getAttributionTop

      public double getAttributionTop()
      Returns the distance from the top of the view to the top of the attribution text. This can be used to position nodes on the view such that they don't obscure the attribution. If the attribution text is not visible then the distance returned will be the distance from the top of the view to the bottom of the displayed map or scene. You can check the visibility of the attribution text with attributionTextVisibleProperty().
      Returns:
      the distance to the attribution top, or the bottom of the map or scene if attribution is not visible
      Since:
      100.1.0
    • spatialReferenceProperty

      public ReadOnlyObjectProperty<SpatialReference> spatialReferenceProperty()
      The spatial reference defines the coordinate system used by the map or scene in the GeoView.

      The SpatialReference is used to relate map coordinates to locations in the real world. This property is available when the view's map or scene has been loaded.

      The value is null until the GeoModel.getLoadStatus() or GeoModel.getLoadStatus() is loaded and the getDrawStatus() is complete.

      Returns:
      the spatialReference property
      Since:
      200.0.0
      See Also:
    • getSpatialReference

      public abstract SpatialReference getSpatialReference()
      Gets the spatial reference.
      Returns:
      the spatial reference
      Since:
      100.0.0
    • drawStatusProperty

      public ReadOnlyObjectProperty<DrawStatus> drawStatusProperty()
      The current draw status.
      Returns:
      the drawStatus property
      Since:
      200.0.0
      See Also:
    • getDrawStatus

      public DrawStatus getDrawStatus()
      Gets the current drawing status of the content displayed in the GeoView.

      New content is drawn every time a user pans or zooms the view, or the app programmatically changes its visible area. There is a short delay before this drawing phase completes. You can use getDrawStatus() to detect whether this drawing phase is in progress or has completed. For example, you may want to take a screen capture of a view's visible area (exportImageAsync()) when drawing is completed.

      Returns:
      the current drawing status of the content displayed in the GeoView
      Since:
      100.0.0
    • isNavigating

      public boolean isNavigating()
      True if the GeoView is animating a viewpoint change or a navigation gesture is in progress, otherwise false.

      Indicates if the Viewpoint of a GeoView is currently changing. This can be due to a programmatic animated change to the Viewpoint, or user interaction with the view, such as panning and zooming.

      Returns:
      true if the GeoView is animating a viewpoint change or a navigation gesture is in progress, otherwise false
      Since:
      100.0.0
    • isWrapAroundEnabled

      public boolean isWrapAroundEnabled()
      True if continuous panning across the international date line is enabled in the GeoView, false otherwise.

      By default, a GeoView attempts to wrap the ArcGISMap or ArcGISScene across the international date line for a continuous panning user experience. The eastern and western hemispheres wrap to form a continuous map, giving the impression that the map is endless.

      Wraparound display is always enabled for a SceneView.

      To disable wraparound behavior for a MapView (or to reenable it), you can set the MapView.setWrapAroundMode(WrapAroundMode) to the appropriate value. Wraparound can only be applied to a MapView if certain conditions are met, as described in WrapAroundMode.ENABLE_WHEN_SUPPORTED.

      If wraparound is enabled, geometries returned from MapView.getVisibleArea() may have coordinates outside the domain of the spatial reference of the map. Before using such geometries to perform spatial queries, address finding, or as feature geometries in a geodatabase, you must normalize them to lie within the spatial reference domain using GeometryEngine.normalizeCentralMeridian(Geometry).

      Returns:
      true if continuous panning across the international date line is enabled in the GeoView, false otherwise
      Since:
      100.0.0
    • setViewpoint

      public void setViewpoint(Viewpoint viewpoint)
      Pan or zoom the GeoView to the specified Viewpoint location.

      In a MapView, only the geometry/location and scale properties of the viewpoint are used.

      In a SceneView the Camera of the viewpoint is used first; if there is no Camera, the geometry/location and scale properties are used to calculate an approximate Camera. For SceneView, you could also use SceneView.setViewpointCamera(com.esri.arcgisruntime.mapping.view.Camera).

      Parameters:
      viewpoint - the new viewpoint
      Throws:
      IllegalArgumentException - if the argument is null
      Since:
      100.0.0
    • getCurrentViewpoint

      public Viewpoint getCurrentViewpoint(Viewpoint.Type viewpointType)
      Retrieves the current Viewpoint of the GeoView.

      This takes into account the attribution bar if it is visible. See isAttributionTextVisible().

      For a MapView, the Camera of the viewpoint will always be null.

      For a SceneView the Camera will never be null.

      Parameters:
      viewpointType - the viewpoint type
      Returns:
      the current viewpoint
      Throws:
      IllegalArgumentException - if the argument is null
      Since:
      100.0.0
    • setViewpointAsync

      public ListenableFuture<Boolean> setViewpointAsync(Viewpoint viewpoint)
      Pan or zoom the GeoView using animation to the specified Viewpoint location, asynchronously.
      Parameters:
      viewpoint - the new viewpoint
      Returns:
      a ListenableFuture whose result indicates if the operation completed successfully or not. Add a listener to this to know when the viewpoint has finished animating.
      Throws:
      IllegalArgumentException - if the argument is null
      Since:
      100.0.0
      See Also:
    • setViewpointAsync

      public ListenableFuture<Boolean> setViewpointAsync(Viewpoint viewpoint, float durationSeconds)
      Pan or zoom the GeoView using animation to the specified Viewpoint location. Animation takes place over the specified duration.
      Parameters:
      viewpoint - the viewpoint
      durationSeconds - the duration seconds
      Returns:
      a ListenableFuture whose result indicates if the operation completed successfully or not. Add a listener to this to know when the viewpoint has finished animating.
      Throws:
      IllegalArgumentException - if the viewpoint is null
      Since:
      100.0.0
    • getViewStateForLayer

      public LayerViewState getViewStateForLayer(Layer layer)
      Retrieves the layer's state in the GeoView.
      Parameters:
      layer - a layer object for which to get the view state
      Returns:
      the current state of a layer in a view
      Throws:
      ArcGISRuntimeException - if layer isn't found
      IllegalArgumentException - if layer is null
      Since:
      100.10.0
    • addDrawStatusChangedListener

      @Deprecated(since="200.0.0", forRemoval=true) public void addDrawStatusChangedListener(DrawStatusChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Adds a draw status changed listener.

      This listener will be invoked on the UI thread if it is added from the UI thread, otherwise it is not guaranteed on which thread the listener is invoked.

      Parameters:
      listener - the listener
      Throws:
      NullPointerException - if the argument is null
      Since:
      100.0.0
    • removeDrawStatusChangedListener

      @Deprecated(since="200.0.0", forRemoval=true) public boolean removeDrawStatusChangedListener(DrawStatusChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Removes a draw status changed listener.
      Parameters:
      listener - the listener
      Returns:
      true if listener successfully removed, false otherwise
      Throws:
      NullPointerException - if the argument is null
      Since:
      100.0.0
    • addSpatialReferenceChangedListener

      @Deprecated(since="200.0.0", forRemoval=true) public void addSpatialReferenceChangedListener(SpatialReferenceChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Adds a listener for changes to the SpatialReference.

      This listener will be invoked on the UI thread if it is added from the UI thread, otherwise it is not guaranteed on which thread the listener is invoked.

      Parameters:
      listener - the listener
      Throws:
      NullPointerException - if the argument is null
      Since:
      100.0.0
    • removeSpatialReferenceChangedListener

      @Deprecated(since="200.0.0", forRemoval=true) public boolean removeSpatialReferenceChangedListener(SpatialReferenceChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Removes a SpatialReference changed listener.
      Parameters:
      listener - the listener
      Returns:
      true, if successful
      Throws:
      NullPointerException - if the argument is null
      Since:
      100.0.0
    • addNavigationChangedListener

      @Deprecated(since="200.0.0", forRemoval=true) public void addNavigationChangedListener(NavigationChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Adds a listener for when navigation has changed.

      This listener will be invoked on the UI thread if it is added from the UI thread, otherwise it is not guaranteed on which thread the listener is invoked.

      Parameters:
      listener - the listener
      Throws:
      NullPointerException - if the listener is null
      Since:
      100.0.0
    • removeNavigationChangedListener

      @Deprecated(since="200.0.0", forRemoval=true) public boolean removeNavigationChangedListener(NavigationChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Removes a navigation change listener.
      Parameters:
      listener - the listener
      Returns:
      true, if successful
      Throws:
      NullPointerException - if the listener is null
      Since:
      100.0.0
    • addLayerViewStateChangedListener

      public void addLayerViewStateChangedListener(LayerViewStateChangedListener listener)
      Adds a listener for changes to layer view state.

      This listener will be invoked on the UI thread if it is added from the UI thread, otherwise it is not guaranteed on which thread the listener is invoked.

      Parameters:
      listener - the listener
      Throws:
      NullPointerException - if the argument is null
      Since:
      100.0.0
    • removeLayerViewStateChangedListener

      public boolean removeLayerViewStateChangedListener(LayerViewStateChangedListener listener)
      Removes a layer view state listener.
      Parameters:
      listener - the listener
      Returns:
      true, if successful
      Throws:
      NullPointerException - if the argument is null
      Since:
      100.0.0
    • addViewpointChangedListener

      public void addViewpointChangedListener(ViewpointChangedListener listener)
      Adds a ViewpointChangedListener.

      This listener will fire when the Viewpoint of this GeoView has changed.

      This listener will be invoked on the UI thread if it is added from the UI thread, otherwise it is not guaranteed on which thread the listener is invoked.

      Parameters:
      listener - the ViewpointChangedListener to add
      Throws:
      IllegalArgumentException - if listener is null
      Since:
      100.0.0
      See Also:
    • removeViewpointChangedListener

      public boolean removeViewpointChangedListener(ViewpointChangedListener listener)
      Removes a ViewpointChangedListener.
      Parameters:
      listener - the ViewpointChangedListener to remove
      Returns:
      true, if successful
      Since:
      100.0.0
      See Also:
    • isResizable

      public boolean isResizable()
      Overrides:
      isResizable in class Control
    • getGraphicsOverlays

      public ListenableList<GraphicsOverlay> getGraphicsOverlays()
      Gets a collection of GraphicsOverlay objects used to display graphics on top of the view's content.

      To display graphics in the GeoView, add the graphics to a GraphicsOverlay and add the GraphicsOverlay to this collection. The order of the GraphicsOverlay objects in the collection reflects their display order in the view. The first GraphicsOverlay in the collection is drawn beneath all other graphic overlays.

      This collection may be empty but is never null. You can't add duplicate GraphicsOverlay objects to the collection or use this graphics overlay collection in another GeoView.

      Use methods such as identifyGraphicsOverlaysAsync(Point2D, double, boolean, int), to identify graphics in this collection.

      Returns:
      a collection of GraphicsOverlay objects used to display graphics on top of the view's content
      Since:
      100.0.0
    • identifyGraphicsOverlayAsync

      public ListenableFuture<IdentifyGraphicsOverlayResult> identifyGraphicsOverlayAsync(GraphicsOverlay graphicsOverlay, Point2D screenPoint, double tolerance, boolean returnPopupsOnly, int maximumResults)
      Identifies a limited number of graphics in the specified graphics overlay, at the given screen point.

      As locations from user gestures are not always accurate to the exact pixel, you can define a tolerance for the identify operation. The tolerance parameter sets the radius of a circle, centered at the specified coordinates, in device-independent pixels (DIP). If the tolerance value is 0, identify performs the test at the specified coordinates. If it is greater than 0, identify tests inside the circle. For touch displays a value of 22 is recommended to cover an average finger tap. The maximum allowed value is 100 DIPs.

      The returnPopupsOnly parameter controls which properties are populated in the IdentifyGraphicsOverlayResult instance. If true, only IdentifyGraphicsOverlayResult.getPopups() is populated. If the overlay does not have popups an error is returned. If false, IdentifyGraphicsOverlayResult.getGeoElements(), IdentifyGraphicsOverlayResult.getGraphics(), and IdentifyGraphicsOverlayResult.getPopups() are populated, if the overlay has popups.

      Parameters:
      graphicsOverlay - the graphics overlay in which to identify the graphics
      screenPoint - the screen coordinates to identify the graphics
      tolerance - a radius in device-independent pixels (DIP) that specifies how precise the identify operation should be
      returnPopupsOnly - true includes only popups in the identify results. False includes both graphics and popups in the results.
      maximumResults - the maximum number of graphics and/or popups returned in the IdentifyGraphicsOverlayResult. A value of -1 indicates unlimited results.
      Returns:
      a ListenableFuture for tracking when the operation is done and getting the result; Add a listener to the future to be notified when the identify operation is complete. The result of the future is an IdentifyGraphicsOverlayResult() object if the operation completed successfully.
      Throws:
      ArcGISRuntimeException - if screenPoint translates to a point outside the current viewpoint set to the GeoView
      IllegalArgumentException - if
      • graphicsOverlay is null
      • screenPoint is null
      • tolerance less than zero or greater than 100
      • maximumResults is zero or less than -1
      Since:
      100.0.0
    • identifyGraphicsOverlayAsync

      public ListenableFuture<IdentifyGraphicsOverlayResult> identifyGraphicsOverlayAsync(GraphicsOverlay graphicsOverlay, Point2D screenPoint, double tolerance, boolean returnPopupsOnly)
      Asynchronously identifies the topmost visible graphic in the given graphics overlay, near given JavaFX local coordinate system point.

      As locations from user gestures are not always accurate to the exact pixel, you can define a tolerance for the identify operation. The tolerance parameter sets the radius of a circle, centered at the specified coordinates, in device-independent pixels (DIP). If the tolerance value is 0, identify performs the test at the specified coordinates. If it is greater than 0, identify tests inside the circle. For touch displays a value of 22 is recommended to cover an average finger tap. The maximum allowed value is 100 DIPs.

      The returnPopupsOnly parameter controls which properties are populated in the IdentifyGraphicsOverlayResult instance. If returnPopupsOnly is true, IdentifyGraphicsOverlayResult.getPopups() is populated. If the overlay does not have popups an error is returned. If false, IdentifyGraphicsOverlayResult.getGeoElements(), IdentifyGraphicsOverlayResult.getGraphics(), and IdentifyGraphicsOverlayResult.getPopups() are populated, if the overlay has popups.

      Parameters:
      graphicsOverlay - the graphics overlay in which to identify the graphic
      screenPoint - the JavaFX local screen coordinates to identify the graphic
      tolerance - a radius in device-independent pixels (DIP) that specifies how precise the identify operation should be
      returnPopupsOnly - true includes only a popup in the identify result. False includes both a graphic and a popup in the result.
      Returns:
      a ListenableFuture for tracking when the operation is done and getting the result; Add a listener to the future to be notified when the identify operation is complete. The result of the future is an IdentifyGraphicsOverlayResult object if the operation completed successfully.
      Throws:
      ArcGISRuntimeException - if screenPoint translates to a point outside the current viewpoint set to the GeoView
      IllegalArgumentException - if
      • graphicsOverlay is null
      • screenPoint is null
      • tolerance less than zero or greater than 100
      Since:
      100.0.0
    • identifyGraphicsOverlaysAsync

      public ListenableFuture<List<IdentifyGraphicsOverlayResult>> identifyGraphicsOverlaysAsync(Point2D screenPoint, double tolerance, boolean returnPopupsOnly, int maximumResults)
      Identifies a limited number of graphics in all graphics overlays, at the given screen point.

      As locations from user gestures are not always accurate to the exact pixel, you can define a tolerance for the identify operation. The tolerance parameter sets the radius of a circle, centered at the specified coordinates, in device-independent pixels (DIP). If the tolerance value is 0, identify performs the test at the specified coordinates. If it is greater than 0, identify tests inside the circle. For touch displays a value of 22 is recommended to cover an average finger tap. The maximum allowed value is 100 DIPs.

      The returnPopupsOnly parameter controls which properties are populated in the IdentifyGraphicsOverlayResult instance. If true, only IdentifyGraphicsOverlayResult.getPopups() is populated. If the overlay does not have popups an error is returned. If false, IdentifyGraphicsOverlayResult.getGeoElements(), IdentifyGraphicsOverlayResult.getGraphics(), and IdentifyGraphicsOverlayResult.getPopups() are populated, if the overlay has popups.

      Results are returned in a top-to-bottom order.

      Parameters:
      screenPoint - the screen coordinates to identify the graphics
      tolerance - a radius in device-independent pixels (DIP) that specifies how precise the identify operation should be
      returnPopupsOnly - true includes only popups in the identify results. False includes both graphics and popups in the results.
      maximumResults - the maximum number of graphics and/or popups returned in the IdentifyGraphicsOverlayResult per graphics overlay. A value of -1 indicates unlimited results.
      Returns:
      a ListenableFuture for tracking when the operation is done and getting the result; Add a listener to the future to be notified when the identify operation is complete. The result of the future is a list of IdentifyGraphicsOverlayResult objects if the operation completed successfully. Results are returned in top-to-bottom order.
      Throws:
      ArcGISRuntimeException - if screenPoint translates to a point outside the current viewpoint set to the GeoView
      IllegalArgumentException - if
      • screenPoint is null
      • tolerance less than zero or greater than 100
      • maximumResults is zero or less than -1
      Since:
      100.0.0
    • identifyGraphicsOverlaysAsync

      public ListenableFuture<List<IdentifyGraphicsOverlayResult>> identifyGraphicsOverlaysAsync(Point2D screenPoint, double tolerance, boolean returnPopupsOnly)
      Identifies the topmost graphic in each graphics overlay, at the given screen point.

      Results are returned in the same order as the graphic overlays in the getGraphicsOverlays() collection.

      As locations from user gestures are not always accurate to the exact pixel, you can define a tolerance for the identify operation. The tolerance parameter sets the radius of a circle, centered at the specified coordinates, in device-independent pixels (DIP). If the tolerance value is 0, identify performs the test at the specified coordinates. If it is greater than 0, identify tests inside the circle. For touch displays a value of 22 is recommended to cover an average finger tap. The maximum allowed value is 100 DIPs.

      The returnPopupsOnly parameter controls which properties are populated in the IdentifyGraphicsOverlayResult instance. If true, only IdentifyGraphicsOverlayResult.getPopups() is populated. If the overlay does not have popups an error is returned. If false, IdentifyGraphicsOverlayResult.getGeoElements(), IdentifyGraphicsOverlayResult.getGraphics(), and IdentifyGraphicsOverlayResult.getPopups() are populated, if the overlay has popups.

      Parameters:
      screenPoint - the screen coordinates to identify the graphics
      tolerance - a radius in device-independent pixels (DIP) that specifies how precise the identify operation should be
      returnPopupsOnly - true includes only popups in the identify results. False includes both graphics and popups in the results.
      Returns:
      a ListenableFuture for tracking when the operation is done and getting the result; Add a listener to the future to be notified when the identify operation is complete. The result of the future is a list of IdentifyGraphicsOverlayResult objects if the operation completed successfully. Results are returned in top-to-bottom order.
      Throws:
      IllegalArgumentException - if
      • screenPoint is null
      • tolerance less than zero or greater than 100
      ArcGISRuntimeException - if screenPoint translates to a point outside the current viewpoint set to the GeoView
      Since:
      100.0.0
    • identifyLayerAsync

      public ListenableFuture<IdentifyLayerResult> identifyLayerAsync(Layer layer, Point2D screenPoint, double tolerance, boolean returnPopupsOnly)
      Identifies the topmost geoelement in the specified layer or sublayer, at the given screen point.

      As locations from user gestures are not always accurate to the exact pixel, you can define a tolerance for the identify operation. The tolerance parameter sets the radius of a circle, centered at the specified coordinates, in device-independent pixels (DIP). If the tolerance value is 0, identify performs the test at the specified coordinates. If it is greater than 0, identify tests inside the circle. For touch displays a value of 22 is recommended to cover an average finger tap. The maximum allowed value is 100 DIPs.

      The result is returned in a single IdentifyLayerResult instance. If the returnPopupsOnly parameter is true only IdentifyLayerResult.getPopups() is populated. If the layer does not have popups an error is returned. If the returnPopupsOnly parameter is false, both IdentifyLayerResult.getElements() and IdentifyLayerResult.getPopups() are populated, if the layer has popups.

      Parameters:
      layer - the layer in which to identify the geoelements
      screenPoint - the screen coordinates to identify the geoelements
      tolerance - a radius in device-independent pixels (DIP) that specifies how precise the identify operation should be
      returnPopupsOnly - true includes only a popup in the identify results. False includes both a geoelement and a popup in the results.
      Returns:
      a ListenableFuture that provides an IdentifyLayerResult upon successful completion of the async operation. Add a listener to the future to be notified when the identify operation is complete.
      Throws:
      ArcGISRuntimeException - if screenPoint translates to a point outside the current viewpoint set to the GeoView
      IllegalArgumentException - if
      • layer is null
      • screenPoint is null
      • tolerance less than zero or greater than 100
      Since:
      100.0.0
      See Also:
    • identifyLayerAsync

      public ListenableFuture<IdentifyLayerResult> identifyLayerAsync(Layer layer, Point2D screenPoint, double tolerance, boolean returnPopupsOnly, int maximumResults)
      Identifies a limited number of geoelements in the specified layer or sublayer, at the given screen point.

      As locations from user gestures are not always accurate to the exact pixel, you can define a tolerance for the identify operation. The tolerance parameter sets the radius of a circle, centered at the specified coordinates, in device-independent pixels (DIP). If the tolerance value is 0, identify performs the test at the specified coordinates. If it is greater than 0, identify tests inside the circle. For touch displays a value of 22 is recommended to cover an average finger tap. The maximum allowed value is 100 DIPs.

      The result is returned in a single IdentifyLayerResult instance. If the returnPopupsOnly parameter is true only IdentifyLayerResult.getPopups() is populated. If the layer does not have popups an error is returned. If the returnPopupsOnly parameter is false, both IdentifyLayerResult.getElements() and IdentifyLayerResult.getPopups() are populated, if the layer has popups. IdentifyLayerResult.getGeoElements() and IdentifyLayerResult.getPopups() provide the results in a top-to-bottom order.

      Parameters:
      layer - the layer in which to identify the geoelements
      screenPoint - the screen coordinates to identify the geoelements
      tolerance - a radius in device-independent pixels (DIP) that specifies how precise the identify operation should be
      returnPopupsOnly - true includes only popups in the identify results. False includes both geoelements and popups in the results.
      maximumResults - the maximum number of geoelements and/or popups returned in the IdentifyLayerResult. A value of -1 indicates unlimited results.
      Returns:
      A ListenableFuture that provides an IdentifyLayerResult upon successful completion of the async operation.
      Throws:
      ArcGISRuntimeException - if screenPoint translates to a point outside the current viewpoint set to the GeoView
      IllegalArgumentException - if
      • layer is null
      • screenPoint is null
      • tolerance less than zero or greater than 100
      • maximumResults is zero or less than -1
      Since:
      100.0.0
      See Also:
    • identifyLayersAsync

      public ListenableFuture<List<IdentifyLayerResult>> identifyLayersAsync(Point2D screenPoint, double tolerance, boolean returnPopupsOnly)
      Identifies the topmost geoelements at the given screen point, in each identifiable layer or sublayer in the GeoView's ArcGISMap or ArcGISScene.

      As locations from user gestures are not always accurate to the exact pixel, you can define a tolerance for the identify operation. The tolerance parameter sets the radius of a circle, centered at the specified coordinates, in device-independent pixels (DIP). If the tolerance value is 0, identify performs the test at the specified coordinates. If it is greater than 0, identify tests inside the circle. For touch displays a value of 22 is recommended to cover an average finger tap. The maximum allowed value is 100 DIPs.

      The result is returned in a collection of IdentifyLayerResult to match the order of the GeoView's GeoModel.getOperationalLayers() or GeoModel.getOperationalLayers() collection. If the returnPopupsOnly parameter is true only IdentifyLayerResult.getPopups() is populated. If the layer does not have popups an error is returned. If the returnPopupsOnly parameter is false, both IdentifyLayerResult.getElements() and IdentifyLayerResult.getPopups() are populated, if the layer has popups.

      Parameters:
      screenPoint - the screen coordinates to identify the geoelements
      tolerance - a radius in device-independent pixels (DIP) that specifies how precise the identify operation should be
      returnPopupsOnly - true includes only popups in the identify results. False includes both geoelements and popups in the results.
      Returns:
      a ListenableFuture of List of IdentifyLayerResult, containing one entry for each layer in the view that supports identify. Each entry contains a Layer and a List of elements of the type contained by the layer (for example, Feature for a FeatureLayer).
      Throws:
      IllegalArgumentException - if
      • screenPoint is null
      • tolerance less than zero or greater than 100
      ArcGISRuntimeException - if screenPoint translates to a point outside the current viewpoint set to the GeoView
      Since:
      100.0.0
      See Also:
    • identifyLayersAsync

      public ListenableFuture<List<IdentifyLayerResult>> identifyLayersAsync(Point2D screenPoint, double tolerance, boolean returnPopupsOnly, int maximumResults)
      Identifies a limited number of geoelements at the given screen point, in each identifiable layer or sublayer in the GeoView's ArcGISMap or ArcGISScene.

      As locations from user gestures are not always accurate to the exact pixel, you can define a tolerance for the identify operation. The tolerance parameter sets the radius of a circle, centered at the specified coordinates, in device-independent pixels (DIP). If the tolerance value is 0, identify performs the test at the specified coordinates. If it is greater than 0, identify tests inside the circle. For touch displays a value of 22 is recommended to cover an average finger tap. The maximum allowed value is 100 DIPs.

      The result is returned in a collection of IdentifyLayerResult to match the order of the GeoView's GeoModel.getOperationalLayers() or GeoModel.getOperationalLayers() collection. If the returnPopupsOnly parameter is true only IdentifyLayerResult.getPopups() is populated. If the layer does not have popups an error is returned. If the returnPopupsOnly parameter is false, both IdentifyLayerResult.getElements() and IdentifyLayerResult.getPopups() are populated, if the layer has popups. IdentifyLayerResult.getGeoElements() and IdentifyLayerResult.getPopups() provide the results in a top-to-bottom order.

      Parameters:
      screenPoint - the screen coordinates to identify the geoelements
      tolerance - a radius in device-independent pixels (DIP) that specifies how precise the identify operation should be
      returnPopupsOnly - true includes only popups in the identify results. An error is returned if the layer does not have popups. False includes both geoelements and popups in the identify results.
      maximumResults - the maximum number of geoelements and/or popups returned in the IdentifyLayerResult per layer or sublayer. A value of -1 indicates unlimited results.
      Returns:
      a ListenableFuture of List of IdentifyLayerResult, containing one entry for each layer in the view that supports identify. Each entry contains a Layer and a List of elements of the type contained by the layer (for example, Feature for a FeatureLayer).
      Throws:
      ArcGISRuntimeException - if screenPoint translates to a point outside the current viewpoint set to the GeoView
      IllegalArgumentException - if
      • screenPoint is null
      • tolerance is less than one or greater than 100
      • maximumResults is zero or less than -1
      Since:
      100.0.0
      See Also:
    • exportImageAsync

      public ListenableFuture<Image> exportImageAsync()
      Asynchronously exports an image snapshot of the current GeoView.

      The exported image contains the currently visible content of the MapView or SceneView. Elements drawn on top of the GeoView, such as callouts or popups, are not exported. You can check getDrawStatus() to confirm that drawing is complete before calling this method.

      Returns:
      a ListenableFuture that provides an Image of GeoView upon successful completion of the asynchronous operation.
      Since:
      100.0.0
    • timeExtentProperty

      public ObjectProperty<TimeExtent> timeExtentProperty()
      The current TimeExtent of the GeoView.

      The TimeExtent defines how time-enabled data is displayed in the GeoView. Participating layers filter their data to only show data within the time extent set on the GeoView (see TimeAware for details). The range of the time extent includes the start and end values. For example, a feature at 10/24/2016 would be included in a time extent defined as 10/24/2016 - 11/14/2016. Time filtering is not enabled until a non-null time extent is set on the GeoView. When the time extent is null on the GeoView, no time filtering is applied and all content is rendered.

      Returns:
      the timeExtent property
      Since:
      200.1.0
      See Also:
    • setTimeExtent

      public void setTimeExtent(TimeExtent timeExtent)
      Sets the time extent of the GeoView.

      The TimeExtent defines how time-enabled data is displayed in the GeoView. Participating layers filter their data to only show data within the time extent set on the GeoView (see TimeAware for details). The range of the time extent includes the start and end values. For example, a feature at 10/24/2016 would be included in a time extent defined as 10/24/2016 - 11/14/2016. Time filtering is not enabled until a non-null time extent is set on the GeoView. When the time extent is null on the GeoView, no time filtering is applied and all content is rendered.

      Parameters:
      timeExtent - the current TimeExtent of the GeoView
      Since:
      100.3.0
      See Also:
    • getTimeExtent

      public TimeExtent getTimeExtent()
      Gets the current time extent.
      Returns:
      the time extent, or null if no time extent is set
      Since:
      100.3.0
      See Also:
    • selectionPropertiesProperty

      public ReadOnlyObjectProperty<SelectionProperties> selectionPropertiesProperty()
      An object containing selection properties that are applied to the GeoView.

      This object allows configuration of new selection highlighting functionality such as selection promotion and switchable selection halo.

      Notes on per-layer selection coloring (supported in 2D only):

      • The deprecated per-layer selection coloring functionality is initially enabled.
      • If the GeoView's SelectionProperties are touched, per-layer selection coloring is then disabled for the lifetime of the view (here, 'touched' means replacing the view's SelectionProperties, or calling a setter property on the view's SelectionProperties).
      • Use of per-layer selection coloring is deprecated and may have a detrimental impact on rendering performance.
      • When per-layer coloring is enabled and more than one selection color is configured, selection halo will be disabled.
      • To enable selection halo or promotion, set the properties to true. Again, this will automatically disable per-layer selection coloring for the lifetime of the view.
      Returns:
      the selectionProperties property
      Since:
      200.0.0
      See Also:
    • getSelectionProperties

      public SelectionProperties getSelectionProperties()
      Gets the selection properties for all graphic overlays and selectable layers within the GeoView.

      You can use SelectionProperties to define the selection color for all graphic overlays and selectable layers within the GeoView. The default selection color is cyan.

      Returns:
      the selection properties for all graphic overlays and selectable layers within the GeoView
      Since:
      100.4.0
    • enableMouseZoomProperty

      public BooleanProperty enableMouseZoomProperty()
      If true mouse wheel zooming is enabled.
      Returns:
      property for controlling mouse wheel zooming
      See Also:
    • setEnableMouseZoom

      public void setEnableMouseZoom(boolean enable)
      Enables or disables mouse wheel zooming.
      Parameters:
      enable - true to enable mouse wheel zoom
    • isEnableMouseZoom

      public boolean isEnableMouseZoom()
      Returns true if mouse wheel zoom is enabled, otherwise false.
      Returns:
      true if enabled
    • enableMousePanProperty

      public BooleanProperty enableMousePanProperty()
      If true mouse panning is enabled.
      Returns:
      property for controlling mouse panning
      See Also:
    • setEnableMousePan

      public void setEnableMousePan(boolean enable)
      Enables or disables mouse panning.
      Parameters:
      enable - true to enable mouse panning
    • isEnableMousePan

      public boolean isEnableMousePan()
      Returns true if mouse pan is enabled, otherwise false.
      Returns:
      true, if mouse panning is enabled
    • enableKeyboardNavigationProperty

      public BooleanProperty enableKeyboardNavigationProperty()
      If true keyboard navigation is enabled.
      Returns:
      property for controlling keyboard navigation
      See Also:
    • setEnableKeyboardNavigation

      public void setEnableKeyboardNavigation(boolean enable)
      Enables or disables keyboard navigation.
      Parameters:
      enable - true to enable keyboard navigation
    • isEnableKeyboardNavigation

      public boolean isEnableKeyboardNavigation()
      Returns true if keyboard navigation is enabled, otherwise false.
      Returns:
      true, if keyboard navigation is enabled
    • enableTouchPanProperty

      public BooleanProperty enableTouchPanProperty()
      If true touch panning is enabled.
      Returns:
      property for controlling touch panning
      See Also:
    • setEnableTouchPan

      public void setEnableTouchPan(boolean enable)
      Enables or disables touch panning.
      Parameters:
      enable - true to enable touch panning
    • isEnableTouchPan

      public boolean isEnableTouchPan()
      Returns true if touch pan is enabled, otherwise false.
      Returns:
      true, if touch panning is enabled
    • enableTouchZoomProperty

      public BooleanProperty enableTouchZoomProperty()
      If true touch zoom (pinch) is enabled.
      Returns:
      property for controlling touch zooming
      See Also:
    • setEnableTouchZoom

      public void setEnableTouchZoom(boolean enable)
      Enables or disables touch zoom (pinch).
      Parameters:
      enable - true to enable touch zooming
    • isEnableTouchZoom

      public boolean isEnableTouchZoom()
      Returns true if touch zoom (pinch) is enabled, otherwise false.
      Returns:
      true, if touch zoom is enabled
    • enableTouchRotateProperty

      public BooleanProperty enableTouchRotateProperty()
      If true touch rotate is enabled.
      Returns:
      property for controlling touch rotation
      See Also:
    • setEnableTouchRotate

      public void setEnableTouchRotate(boolean enable)
      Enables or disables touch rotate.
      Parameters:
      enable - true to enable touch rotate
    • isEnableTouchRotate

      public boolean isEnableTouchRotate()
      Returns true if touch rotate is enabled, otherwise false.
      Returns:
      true, if touch rotate is enabled
    • attributionTextVisibleProperty

      public BooleanProperty attributionTextVisibleProperty()
      If attribution text is visible.
      Returns:
      property for controlling attribution text visibility
      Since:
      100.0.0
      See Also:
    • isAttributionTextVisible

      public boolean isAttributionTextVisible()
      True if attribution text is visible in the GeoView, false otherwise.
      Returns:
      true if attribution text is visible in the GeoView, false otherwise
      Since:
      100.0.0
      See Also:
    • setAttributionTextVisible

      public void setAttributionTextVisible(boolean visible)
      Sets the visibility of the Esri attribution text. The Esri attribution text must be visible if your app uses data served by Esri through ArcGIS Online.
      Parameters:
      visible - true if the attribution text should be visible
      Since:
      100.0.0
      See Also:
    • addAttributionTextChangedListener

      @Deprecated(since="200.0.0", forRemoval=true) public void addAttributionTextChangedListener(AttributionTextChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Registers an AttributionTextChangedListener to be called when the attribution text of the GeoView changes, for example if a layer is removed or added the attribution text needs to update.

      This listener will be invoked on the UI thread if it is added from the UI thread, otherwise it is not guaranteed on which thread the listener is invoked.

      Parameters:
      listener - the listener to register
      Throws:
      NullPointerException - if the listener is null
      Since:
      100.1.0
      See Also:
    • removeAttributionTextChangedListener

      @Deprecated(since="200.0.0", forRemoval=true) public boolean removeAttributionTextChangedListener(AttributionTextChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Unregisters an AttributionTextChangedListener that was previously added using addAttributionTextChangedListener(AttributionTextChangedListener).
      Parameters:
      listener - the listener to remove
      Returns:
      true if the listener was successfully removed; false otherwise
      Throws:
      NullPointerException - if the listener is null
      Since:
      100.1.0
    • addTimeExtentChangedListener

      @Deprecated(since="200.1.0", forRemoval=true) public void addTimeExtentChangedListener(TimeExtentChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Registers a TimeExtentChangedListener to be called when the time extent of the GeoView is changed.

      This listener will be invoked on the UI thread if it is added from the UI thread, otherwise it is not guaranteed on which thread the listener is invoked.

      Parameters:
      listener - the listener to register
      Throws:
      IllegalArgumentException - if listener is null
      Since:
      100.10.0
    • removeTimeExtentChangedListener

      @Deprecated(since="200.1.0", forRemoval=true) public boolean removeTimeExtentChangedListener(TimeExtentChangedListener listener)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Parameters:
      listener - the listener to unregister
      Returns:
      true if the listener was successfully removed; false otherwise
      Throws:
      IllegalArgumentException - if listener is null
      Since:
      100.10.0
    • attributionTextProperty

      public ReadOnlyStringProperty attributionTextProperty()
      The full attribution text, concatenated into a single string.
      Returns:
      the attributionText property
      Since:
      200.0.0
      See Also:
    • getAttributionText

      public String getAttributionText()
      Gets the attribution text for the data that is currently displayed in the GeoView.

      Attribution text includes data providers or sources for layers and copyright text. The full attribution text is concatenated into a single string that is displayed in a banner along the bottom edge of the view.

      Returns:
      the attribution text for the data that is currently displayed in the GeoView
      Since:
      100.1.0
    • getCallout

      public final Callout getCallout()
      Gets the Callout for this GeoView. A callout displays a Region that contains text and/or other content. A GeoView has only one Callout.
      Returns:
      the Callout object for this GeoView
      Since:
      100.1.0
    • setInteractionListener

      public void setInteractionListener(InteractionListener interactionListener)
      Sets the listener to handle input interactions on the GeoView.
      Parameters:
      interactionListener - listener to handle input interactions on the GeoView
      Throws:
      IllegalArgumentException - if the interactionListener is null
      Since:
      100.1.0
    • getInteractionListener

      public InteractionListener getInteractionListener()
      Gets the current interaction listener.
      Returns:
      the current interaction listener
      Since:
      100.1.0
    • setBookmarkAsync

      public ListenableFuture<Boolean> setBookmarkAsync(Bookmark bookmark)
      Sets the Viewpoint of the GeoView to the Bookmark.getViewpoint().
      Parameters:
      bookmark - bookmark to set
      Returns:
      a ListenableFuture. Add a listener to this to know when the operation is complete. The result of the future indicates whether the bookmark was set
      Throws:
      IllegalArgumentException - if bookmark is null
      Since:
      100.3.0
    • labelingProperty

      public ObjectProperty<ViewLabelProperties> labelingProperty()
      The view label properties.

      The view label properties are an overall control for whether labels will be created and displayed for layers added to the view. Individual layers can also control whether labels should be displayed for their features. Labels need to be enabled both in the view and in the layer. By default the labeling for a view is enabled. The view label properties also control global aspects of the label appearance, for example animation effects.

      Must not be set to null.

      Returns:
      the labeling property
      Since:
      200.0.0
      See Also:
    • getLabeling

      public ViewLabelProperties getLabeling()
      Gets the view label properties.

      This property determines whether labels are created, added and animated for all of the layers and graphic overlays in the view. For example, you can prevent labels displaying in the GeoView if you set ViewLabelProperties.isLabelingEnabled() to false. This overrides the labelsEnabled properties set on all layers and graphic overlays in the view. The default value of ViewLabelProperties.isLabelingEnabled() is true.

      Returns:
      the view label properties
      Since:
      100.10.0
    • setLabeling

      public void setLabeling(ViewLabelProperties viewLabelProperties)
      Sets the view label properties.

      This property determines whether labels are created, added and animated for all of the layers and graphic overlays in the view. For example, you can prevent labels displaying in the GeoView if you set ViewLabelProperties.isLabelingEnabled() to false. This overrides the labelsEnabled properties set on all layers and graphic overlays in the view.

      Parameters:
      viewLabelProperties - the view label properties
      Throws:
      IllegalArgumentException - if viewLabelProperties is null
      Since:
      100.10.0
    • dispose

      public void dispose()
      Dispose the GeoView
      Since:
      100.0.0