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:

The following types of reports are supported:

The following map errors can be reported:

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:

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:

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.