This guide provides instructions on creating a simple SDK for iOS application to render a map on an iOS device. Users are able to navigate the map by way of touch gestures such as panning, rotating, tilting, and pinching. The contents of this guide apply to Xcode 13.0 and iOS 16 SDK.
This tutorial applies to development using Objective-C. For information on how to perform the same tasks using Swift see Create a Simple HERE SDK App Using Swift.
Acquire HERE SDK Credentials
Before working with HERE SDK you need to acquire a set of credentials by registering your application on https://developer.here.com. Each application requires a unique set of credentials. For the available authentication options, see the Identity & Access Management Developer Guide.
Create a New Single View Application
From Xcode menu select File > New > Project to open the New project dialog (or press Shift + Command + N).
Select iOS > Application > Single View Application as the application type you want to create. Press Next.
In the next dialog enter your Product Name (such as HelloMap) and Organization Identifier (such as edu.self). The resulting Bundle Identifier must be the same as you have registered on developer.here.com.
Next, choose "Objective-C" under Language, then click Next. Navigate to the directory where you want your project to be stored and then select Create.
The next step is to configure this project to use HERE SDK.
Add SDK for iOS
There are two ways to add SDK for iOS to your Xcode project:
CocoaPods
Manually import the dynamic framework
To use CocoaPods to import HERE SDK:
Create a Podfile in your project and add the following. Replace YourApp with your project name.
platform :ios, '13.0'
target 'YourApp' do
pod 'HEREMaps'
end
Next, open a command-line terminal on your workstation. From your project root folder run this command:
pod install
Note: Cocoapods will integrate NMAKit.xcframework format which is recommended by Apple.
Alternatively, to manually import HERE SDK dynamic framework:
Download SDK for iOS package from https://developer.here.com and extract it to somewhere in your local file system.
Add the NMAKit.xcframework to your Xcode project. Click on your app target and choose the "General" tab. Find the section called "Frameworks, Libraries, and Embedded Content", click the plus (+) sign, click the "Add Other" and then click the "Add Files" button. From the file dialog box select "NMAKit.xcframework" folder and then click Finish. Figure 1. Adding NMAKit.xcframework
Ensure that NMAKit.xcframework appears in "Frameworks, Libraries, and Embedded Content" section. Figure 2. Added Frameworks
Verify and Run the App
Next, ensure that modules are enabled. Click on the "Build Settings" tab and navigate to "Apple Clang - Language - Modules" section. Ensure that "Enable Modules (C and Objective-C)" has the value "YES". Figure 3. Enable Modules
Run the application. From the Xcode menu bar select Product > Run. Ensure that the project runs in iOS Simulator without errors.
SDK for iOS is now ready for use in your Xcode project. Now that you have your project configured to work with HERE SDK, try extending the sample application to render a map.
Create the Map View
In this section we utilize the NMAMapView and NMAGeoCoordinates classes to render a Map.
Create an NMAMapView.
Select Main.storyboard in the navigator, then open the Utilities view by pressing the key combination Command + Option + Control + 3. Drag and drop a View object from the Object Library onto the View Controller. If necessary, resize the View so it takes up the entire viewable area.
In the Interface Builder click on the created View and then open the Identity Inspector in the Utilities view by pressing the key combination Command + Option + 3. Change the class value from UIView to NMAMapView and press return. In the Document Outline you should see that the name of the View has changed from View to Map View.
Figure 4. MapView
Create an outlet to NMAMapView in ViewController.
Select Main.storyboard in the navigator.
Press Command + Option + Return to open the Assistant Editor. It should show ViewController.m.
Add the following import statement to the top of this file:
@import NMAKit;
Hold the Control key on the keyboard and click to drag from the Map View to the interface block in ViewController.m. You should see a blue line and a tooltip which says "Insert Outlet or Outlet Connection". Release the mouse button and a dialog appears allowing you to create an outlet.
Name the outlet mapView, keep the other default options, and then select Connect.
Figure 5. Create an Outlet
Now an outlet to NMAMapView is set. The modified file should be as follows:
Implement NMAMapView setup and lifecycle code by modifying the viewDidLoad method as shown:
- (void)viewDidLoad
{
[super viewDidLoad];
//set geo center
NMAGeoCoordinates *geoCoordCenter =
[[NMAGeoCoordinates alloc] initWithLatitude:49.260327 longitude:-123.115025];
[self.mapView setGeoCenter:geoCoordCenter withAnimation:NMAMapAnimationNone];
// Note, logo is not shown when its size is greater than 1/8 of NMAMapView's height or width.
self.mapView.copyrightLogoPosition = NMALayoutPositionBottomCenter;
//set zoom level
self.mapView.zoomLevel = 13.2;
}
Add your HERE application credentials.
Open AppDelegate.m and import NMAKit by adding the following import statement to the top of the file.
@import NMAKit;
Add the following to didFinishLaunchingWithOptions method replacing YOUR_APP_ID, YOUR_APP_CODE and YOUR_LICENSE_KEY with the credentials that you received from https://developer.here.com.
Build and run the application. If the build is successful, you now have an application that displays a map similar to the following screenshot and allows you to manipulate it using gestures.