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.