FeatureHighlighter Class
A class responsible for highlighting points, lines, and shapes on the map upon selection and consequent hover actions. The highlighting is achieved by manipulating svg rendering of the map as follows:
- all existing feature layers are wrapped into a group object
- three more group objects are created:
highlight group
is positioned after thegraphicGroup
zoomlight group
is positioned before thegraphicGroup
hoverlight group
is positioned before thezoomlight group
and changing the opacity of the graphicGroup
while adding shapes to one or more of the additional group objects.
Item Index
Methods
- _hideLoadingImg
- _initEventHandlers
- _initListeners
- _initRepublishers
- _initScale
- _showLoadingImg
- _updateScale
- _wrapFileCallInPromise
- AddStaticLayer
- applyExtentDefaulting
- checkBoundary
- cloneGraphic
- enhanceLayer
- finishExtentProjection
- getBoundingBoxMapping
- getFeatureLayer
- getVisibleFeatureLayers
- highlightGraphic
- highlightGraphicHide
- hoverLight
- hoverLightHide
- init
- initListeners
- localProjectExtent
- makeFeatureLayer
- makeStaticLayer
- makeWmsLayer
- prepLayer
- projectConfigExtents
- projectExtent
- projectFullExtent
- projectMaxExtent
- repositionInteractive
- republish
- setBoundingBoxVisibility
- sortLayers
- zoomLight
- zoomLightHide
- zoomToLayerScale
Properties
Methods
_hideLoadingImg
()
private
Hides the loading image.
_initEventHandlers
-
map
Creates event handlers for the map control: click, mouse-over, load, extent change, and update events.
Parameters:
-
map
ObjectA ESRI map object
_initListeners
-
map
Subscribe to external events (published using topic.publish) and react accordingly
Parameters:
-
map
Objectmap object
_initRepublishers
-
map
Republishes map events to the outside using topic.publish
Parameters:
-
map
Objectobject
_showLoadingImg
()
private
Shows the loading image.
_wrapFileCallInPromise
-
readMethod
Helper function for wrapping File API calls in Promise objects. Used for building a series of helpers which call different file read methods.
Parameters:
-
readMethod
Stringa string indicating the FileReader method to call
Returns:
a function which accepts a {File} object and returns a Promise
AddStaticLayer
-
layer_type
-
layer_url
-
layer_op
Add a static, non-interactive Layer to the map
applyExtentDefaulting
()
private
Apply extent defaulting prior to URL overrides.
checkBoundary
-
e
-
maxExtent
Given an ESRI Extent Object, returns a new ESRI Extent Object that contains the extent adjusted according to this map's maximum extent
NOTE: this method is currently unused!
Parameters:
-
e
Esri/geometry/Extentthe extent Object
-
maxExtent
Esri/geometry/Extentthe maximum extent
Returns:
An adjusted extent, if the target extent is outside the boundary
cloneGraphic
-
graphic
Creates a copy of the given graphic object.
Parameters:
-
graphic
ObjectGraphic object to clone
Returns:
clone A cloned Graphic object
enhanceLayer
-
layer
-
config
-
userLayer
Adds custom ramp properties to layer. Adds handlers to loading events.
finishExtentProjection
-
projectedMaxExtent
process the projected maximum extent, then alert app to continue loading the map. used as an asynchronous gate for the projection.
Parameters:
-
projectedMaxExtent
Arrayan array containing the maximum extent object in the map's projection
getBoundingBoxMapping
()
Object
Returns the mapping of feature layer ids to assocciated bounding box layers.
Returns:
A dictionary of String, Esri/layers/GraphicsLayer pairs.
getFeatureLayer
-
featureId
Return the feature layer corresponding to the given id.
Parameters:
-
featureId
Stringthe id of the feature layer
Returns:
feature layer
getVisibleFeatureLayers
()
Array
Returns a list of feature layers that are currently visible on the map.
Returns:
an array of Esri/layers/FeatureLayer objects
highlightGraphic
-
eventArg
Clones the Graphic object from the event, adds it to the Highlight layer, and lowers the opacity of other map layers to make the cloned Graphic stand out.
Parameters:
-
eventArg
Object???
highlightGraphicHide
()
private
Clears the Highlight layer and restores the opacity of the map layers.
hoverLight
-
eventArg
Clones the Graphic object from the event, adds it to the Hoverlight layer.
Parameters:
-
eventArg
Object???
hoverLightHide
()
private
Clears the Hoverlight layer.
init
()
Initiates the FeatureHighlighter static class.
initListeners
()
private
Initiates various listeners for the class.
localProjectExtent
-
extent
-
sr
Will project an extent to a desired spatial reference, using client side projection library. Avoids the need for Esri Geometry Service
Parameters:
-
extent
Esri/Extentextent to be projected
-
sr
Esri/SpatialReferenceEsri/SpatialReference to project to
Returns:
extent in the desired projection
makeFeatureLayer
-
layerConfig
-
userLayer
Create a new FeatureLayer object based on the config input
Parameters:
Returns:
feature layer object (unloaded)
makeStaticLayer
-
layerConfig
-
userLayer
Return the static layer corresponding to the given url.
Parameters:
Returns:
layer object of the appropriate type
makeWmsLayer
-
layerConfig
-
userLayer
Return the feature layer corresponding to the given url.
Parameters:
Returns:
WMS layer
prepLayer
-
layer
-
config
-
userLayer
Sets up loading event handlers and initializes the .ramp object of a layer Circular reference errors prevent us from calling LayerLoader directly from this module
projectConfigExtents
()
initiate the projection of the config extents to basemap extents
projectExtent
-
extent
-
sr
-
callWhenDone
project an extent to a new spatial reference, if required when projection is finished, call another function and pass the result to it.
Parameters:
-
extent
Objectan extent object from the configuration
-
sr
Esri/SpatialReferenceEsri/SpatialReference to project to
-
callWhenDone
Functionfunction to call when extent is projected. expects geometry parameter
projectFullExtent
-
projectedDefaultExtent
process the projected default extent, begin projection of full extent. used as an asynchronous gate for the projection.
Parameters:
-
projectedDefaultExtent
Arrayan array containing the default extent object in the map's projection
projectMaxExtent
-
projectedFullExtent
process the projected full extent, begin projection of maximum extent. used as an asynchronous gate for the projection.
Parameters:
-
projectedFullExtent
Arrayan array containing the full extent object in the map's projection
repositionInteractive
()
private
If there a Graphic in the Highlihgh layer, resets it's bounding box and repositions an interactive maptip to match the top center of the boudning box of the highlighted graphic.
setBoundingBoxVisibility
-
layerId
Sets the visibility of the bounding box that belongs to the layer with the given layerId. Note: the layerId needs to be the ID of the featurelayer, not the ID of the actual bounding box layer.
Parameters:
-
layerId
Stringthe id of the layer whose bounding box visibility should be set
sortLayers
()
private
Sorts and groups the svg representation of the map layers on the page to make highlighting work. Group all the feature layers and create new groups for highlight, zoomlight, and hoverlight layers.
zoomLight
-
eventArg
Clones the Graphic object from the event, adds it to the Zoomlight layer, and lowers the opacity of other map layers to make the cloned Graphic stand out.
Parameters:
-
eventArg
Object???
zoomLightHide
()
private
Clears the Zoomlight layer and restores the opacity of the map layers if the Highlight layer is empty.
zoomToLayerScale
-
layerId
For a specified layer, zooms to the closest level that has some visible data.
Parameters:
-
layerId
Stringa layer id to zoom to.
Properties
boundingBoxMapping
Object
private
Maps the id of a graphic layer to the GraphicsLayer Object that represents its extent bounding box. A dictionary of String, Esri/layers/GraphicsLayer pairs.
featureLayerStartIndex
Integer
private
The map not only contains feature layers, but also other layers such as the basemap layer, highlight layer, bounding box layer, etc. This variable is used to store the starting index of the feature layers in the map.
fullExtent
Esri/geometry/Extent
private
Used for full extent in nav widget
InitExtent
Esri/geometry/Extent
private
The initial extent of the map
maxExtent
Esri/geometry/Extent
private
The maximum extent of the map
Events
FeatureHighlighter.HIGHLIGHT_HIDE [subscribed]
Dehighlights a currently highlighted feature on the map and restores opacity of the rest of the layers; hides the interactive tooltip.
FeatureHighlighter.HIGHLIGHT_SHOW [subscribed]
Permanently highlights a given feature on the map; display an interactive tooltip for this feature; reduces opacity of the graphicGroup
layers.
Even when the user moves the cursor away, the feature stays highlighted; tooltip stays put.
Only one feature can be highlighted like this at a time.
Event Payload:
-
eventAttr
ObjectESRI feature click even attributes
FeatureHighlighter.HOVERLIGHT_HIDE [subscribed]
Dehighlights a currently highlighted (hoverlighted) feature on the map without restoring opacity of the rest of the layers;
FeatureHighlighter.HOVERLIGHT_SHOW [subscribed]
Temporarilly highlights (hoverlights) a given feature on the map. Intended to be dehighlighted when the user moves the cursor away; to do that, publish HOVERLIGHT_HIDE event. Effect is only visible when another feature is already permanently highlighted. Only one feature can be highlighted like this at a time.
Event Payload:
-
eventAttr
ObjectESRI feature click even attributes
FeatureHighlighter.ZOOMLIGHT_HIDE [subscribed]
Dehighlights a currently highlighted (zoomlighted) feature on the map; Removes the tooltip. Restores the opacity of the graphicGroup layers if no feature is highlighted at present.
FeatureHighlighter.ZOOMLIGHT_SHOW [subscribed]
Temporarilly highlights (zoomlightes) a given feature on the map. Intended to be dehighlighted when the user makes an action like panning or zooming the map, publish ZOOMLIGHT_HIDE event. Displays a temporary tooltip for this feature; Only one feature can be highlighted (zoomlighted) like this at a time.
Event Payload:
-
eventAttr
ObjectESRI feature click even attributes