Map reports (v.2.1.x - iOS)
The SDK allows users to submit map events, such as road accidents, hazards, and other incidents, and notify developers about errors in the map, such as missing roads or incorrect information.
This is done through the NMMapReportsManager
class, which has the following functionality:
Submitting various types of map reports using the
- (void)submitReport:(nonnull NMMapReport *)mapReport
method.Adding, removing, and submitting map events, checking for pending events and their submission status.
Reporting and managing map errors, checking for pending errors and their submission status.
Tracking the submission status of events and errors.
The following types of reports are supported:
Accidents
Road closures
Hazards
Map errors
Police
Road works
Safety cameras
Traffic
Dangerous weather conditions
The following map errors can be reported:
Blocked streets
Incomplete addresses
Missing addresses
Missing barriers
Missing speed limits
Missing streets
Missing stations
Missing stops
One-way roads
Wrong turns
Incorrect roundabouts
NMMapReportsManager *manager = sdk.mapReportsManager;
NMMapCoordinates *reportLocation = sdk.navigationService.currentPosition.coordinates;
NMMapReportAccident *report = [[NMMapReportAccident alloc] initWithLocation:location accidentType:NMAccidentTypeMajor];
report.comment = @"This building does not have an address";
[manager submitReport:report];
Each report needs to have a location, and it can also have the following information attached to it:
Address
Road side
Comment
Specific types of reports also have additional information. For example, for road accidents, it’s possible to specify whether it was a minor or a major accident.
To listen for report submission events, add the NMMapReportsListener
interface and add it to the manager using the - (void)addMapReportsListener:(nonnull id<NMMapReportsListener>)listener
method.
The following notifications can be received:
A new report was added.
An existing report was updated.
An existing report was removed.
Report submission was started or finished.
It’s also possible to check if a particular event or error is being submitted at the moment using the
- (BOOL)isEventSubmissionInProgress:(nonnull NSString *)reportId
and
- (BOOL)isErrorSubmissionInProgress:(nonnull NSString *)reportId
methods.
To check for reports that haven’t been submitted yet, use the
- (BOOL)hasPendingMapEvents
or
- (BOOL)hasPendingMapErrors
methods.
If either of these methods returns true, the corresponding reports can be submitted using the
- (void)submitPendingMapEvents
and
- (void)submitPendingMapErrors
methods.
Local copies of reports can be removed using the
- (void)removeMapEvent:(nonnull NSString *)reportId
and
- (void)removeMapError:(nonnull NSString *)reportId
methods.
To get the number of existing reports, the
- (NSInteger)mapEventsCount
and
- (NSInteger)mapErrorsCount
methods can be used. An existing report can be retrieved by its index using the
- (nullable NMMapReport *)mapEventWithIndex:(NSInteger)index
and
- (nullable NMMapReport *)mapErrorWithIndex:(NSInteger)index
methods.