Optional
addAdds a Feature
to the store.
When the addition is successful, the Store
must:
Feature
to reflect the ID assigned by the server,
if the Feature
's ID was undefined prior to addition. If an ID was already defined,
the Store
should respect the provided ID unless overridden by the server.
The Feature
to add.
Optional
options: anyAn optional object for additional implementation-specific parameters.
Returns the identifier of the Feature
on success,
or a promise that resolves to the identifier.
Optional
getRetrieves a Feature
by id from the data provider.
The identifier of the Feature
.
Optional
options: anyAn optional object that can be used in a specific implementation of the method.
May return the Feature
, or a promise for the Feature
.
When no feature with that id exists the returned value must be either undefined
(the synchronous case),
or a rejected promise (the asynchronous case).
Optional
putUpdates an existing Feature
in the store, or adds it if it does not already exist.
When the operation is successful, the Store
must emit a "StoreChanged" event.
The event should contain:
eventType
: "update" if an existing feature is updated, or "add" if a new feature is added.feature
: The updated or newly added Feature.id
: The identifier of the affected Feature.The implementation of this method may follow the semantics of an HTTP PUT request. This means that if the feature does not already exist in the store, it may be added as a new entry.
The Feature
to update or add.
Optional
options: anyAn optional object for additional implementation-specific parameters.
Returns the identifier of the Feature
on success, or a promise that resolves to the identifier.
Queries the store for objects. This method is not optional.
Optional
query: anyAn object which represents a query filter that is understood by the underlying data provider. The structure of this object depends on a specific store implementation.
Optional
options: QueryOptionsAn optional object that can be used in a specific implementation of the method.
A Cursor over a set of Feature
instances or a promise for that Cursor
.
Optional
removeRemoves a Feature
from the store by its ID.
When the removal is successful, the Store
must emit a "StoreChanged" event,
which contains an eventType
of "remove" and the ID of the removed Feature
.
If the Store
does not emit the "StoreChanged" event, the map visualization will not reflect the removal of the feature.
The identifier of the Feature
to be removed.
Returns true
on successful removal, or a promise that resolves to true
.
Optional
spatialQueries the store for objects within a spatial extent. This method is optional.
Note: LuciadRIA determines the layer's default loading strategy based on the existence of this method in the store. If this method is implemented by store then the default loading strategy is LoadEverything.
Note: In a situation when the map reference and the model reference are incompatible, for example: a Cartesian reference and a geodetic reference, then the layer's LoadEverything.
Note:
WFSFeatureStore implements this method
by creating an OGC BBOX filter based on the bounds
parameter.
Optional
bounds: BoundsThe spatial extent to return features for.
Optional
query: anyAn object which represents a query filter that is understood by the underlying data provider. The structure of this object depends on a specific store implementation.
Optional
options: QueryOptionsAn optional object that can be used in a specific implementation of the method.
A Cursor.
Optional
onAn event that is emitted when the contents of the store change. Stores that perform create, update, or delete operations must implement this event to ensure that changes are communicated properly to listeners.
The "StoreChanged" event.
The callback to be invoked when the contents of the store change. The callback has three parameters:
Optional
context: anyAn optional value used as the this
context when executing the callback.
Optional
options: StoreChangedOptionsAn optional object specifying additional options for the event listener. StoreChanged
Registers an event listener on this store. This method is optional if Store
does not emit events.
Note: although this method is optional, it is strongly recommended to provide support for attaching
listeners to the Store
. The FeatureModel
needs those events to generate ModelChanged
events. So if your Store
does not emit events, the visual representation of the model (e.g. the layer) will
not be automatically updated when a feature is changed in the Store
.
the event
the event listener
Rest
...args: any[]Optional
context: anyvalue to use as "this" when executing callback
Optional
options: StoreChangedOptionsAn options object literal
An object containing a single function named 'remove
'. This can be used to unregister the listener
from this store.
The store object provides the link between the FeatureModel and the data provider. The function of the store is to query the server for data, convert the response of the server to LuciadRIA Feature instances, and to perform optional CRUD operations: get, create, update and delete.
Most of the
Store
implementations separate the communication with a data provider (e.g. a WFS service) from the actual parsing of the server response. The conversion of the server response to LuciadRIAFeature
instances is left to a Codec. For example, theWFSFeatureStore
can be configured with a dedicatedCodec
if your WFS server, which the WFSFeatureStore connects to, does not support GeoJson as an output format.A typical sequence of method calls on a set of a
FeatureModel
-Store
-Codec
is the following (without considering the asynchronous nature of those methods):FeatureModel#query
gets called to perform the query on the server side.FeatureModel
passes the query parameters to theStore#query
method.Store
performs the query and passes the response value to theCodec
for decoding.Codec
returns theFeature
instances to theStore
, which passes them back to theFeatureModel
.Note: Most of the methods in the
Store
API are optional. The presence of such an optional method indicates that the store can perform a specific action on a feature. For instance, aStore
can implement thequery
andget
methods but omit theadd
,put
andremove
methods. That also affects the functionality of theFeatureModel
paired with theStore
, as explained in the documentation of the FeatureModel class.Users of this class should always check whether an optional method is available before calling the method, as illustrated below:
In order to create a custom store that implements the event system, the custom store should implement Evented.