Working with the SDK
The key component of NavmiiSDK framework is NMSdk class. To initialize NMSdk and start map rendering, create an instance of NMSdk class and use startWithSettings: method. This method takes NMConfigurationSettings as an argument. To deinitialize NMSdk use destroy method. The pause and resume methods only start and stop map rendering respectively, without initializing/deinitializing the SDK.
To see code examples of initializing the SDK please refer to CREATING THE MAP VIEW section. NMConfigurationSettings are described in SDK CONFIGURATION SETTINGS.
Here's the most typical example of the last three methods usage:
//in AppDelegate.m
- (void)applicationWillTerminate:(UIApplication *)application {
[navmiiSdk destroy];
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
[navmiiSdk pause];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[navmiiSdk resume];
}
SDK CONFIGURATION SETTINGS
NMConfigurationSettings class represents the settings with which the SDK can be launched. If you have the resources designated to customize the map, you can specify the path to these resources using customResourcesPath property. To enable map rendering in offline mode, specify the path to the folder with offline maps using offlineMapsPath property. You can also specify the path to the folder where the SDK puts files created at runtime.
To create an NMConfigurationSettings instance use the instance or class method:
NMConfigurationSettings *settings =
[[NMConfigurationSettings alloc] initWithCustomResourcesPath:customResourcesPath
offlineMapsPath:offlineMapsPath
innerFilesPath:innerFilesPath
mapSchemeId:mapSchemeId];
//or alternatively
NMConfigurationSettings *settings =
[NMConfigurationSettings settingsWithCustomResourcesPath:customResourcesPath
offlineMapsPath:offlineMapsPath
innerFilesPath:innerFilesPath
mapSchemeId:mapSchemeId];
SDK STATE
The NMSdk can have four possible states represented by NMSdkState enum:
- not initialized
- active
- paused
- destroyed
You can retrieve the SDK state through NMSdk's state property.
The process of the SDK's initialization is asynchronious. To be informed on the initialization finish use NMSdkStateChangeListener protocol methods:
- (void)onSdkStarted {
//handle initialization here
}
- (void)onSdkIsFailedToStart:(NSError *)error {
//handle failure here
}
Other useful NMSdkStateChangeListener protocol methods are:
- (void)onSdkPaused {
//handle the SDK has been paused
}
- (void)onSdkResumed {
//handle the SDK has been resumed
}
- (void)onSdkDestroyed {
//handle the SDK has been destroyed
}