LogoLogo
CMSGitHubSupportBook a demo
  • Documentation
  • Academy
  • Help Center
  • Welcome
  • SDKS & Frameworks
    • Web
      • Getting Started
        • Prerequisites
          • MapsIndoors
          • Map Engine Provider
            • Option 1: Get your Mapbox Access Token
            • Option 2: Get your Google Maps API Keys​
          • Map Engine Setup
        • Getting Started: MapsIndoors
      • Map Visualization
        • Highlight, Hover and Select
        • Remove Labels from Buildings and Venues
        • Change Building Outline
        • Managing Collisions Based on Zoom Level
        • 3D Maps
          • Managing your 3D Maps
        • Base Map Styling - Google Maps
        • Managing feature visibility for Mapbox
      • Wayfinding
        • Directions
        • Directions Service
          • Tailoring the directions to your specific needs
        • Directions Renderer
          • Customizing the Route Animation
        • Multi-stop navigation
          • Custom Icons
        • User's Location as Point of Origin
      • Search
        • Search Operations
        • Searching
        • Using External ID, Geospatial Joins
        • Utilizing MapsIndoors Web Components and Other Searches
      • Map Management
      • Data Visualization
        • Display Heatmap Overlay
      • Other guides
        • Authentication
          • Single Sign-On
            • SSO Configuration
            • SSO Authorisation
          • 2-Factor Authentication
          • Password Reset
        • Application User Roles
        • Custom Properties
        • Display Language
        • Language
        • User Positioning
          • Show User's Location aka. Blue Dot
          • Using Cisco DNA Spaces
        • Working with Events
        • Turn Off Collisions Based on Zoom Level
        • Remove Labels from Buildings and Venues for Web
        • Synchronizing data for a subset of venues
        • Custom Floor Selector
      • Display Rules in Practice
      • Offline Data
      • Managing map visibility
    • Android
      • Getting Started
        • Prerequisites
        • Create a New Project
        • Show a Map
        • Create a Search Experience
        • Getting Directions
        • Enable Live Data
        • Integrating MapsIndoors into your own App
        • Migrating from V3 to V4
          • Migrating to Mapbox V11
      • Directions
        • Directions Service
        • Directions Renderer
          • User's Location as Point of Origin
        • Wayfinding Instructions
          • See Route Element Details
        • Using multi-stop navigation
      • Searching
        • Searching on a Map
        • Creating a Search Experience
      • Switching Solutions
      • Caching & Offline Data
      • Display Language
      • Displaying Objects
        • Application User Roles
        • Getting a Polygon from a Location
        • Location Clustering
        • Location Data Sources
        • Location Details
        • Turn Off Collisions Based on Zoom Level
        • Enabling and Disabling features on the map
      • Change Building Outline Color
      • Event Logging
      • Configuring a menu with AppConfig
      • Display Heatmap Overlay
      • Custom Properties
      • Custom Floor Selector
      • External IDs
      • User Positioning
        • Show User's Location aka. Blue Dot
        • Using Cisco DNA Spaces
        • Using Google Fused Location Provider
        • Using Indoor Atlas
      • Authentication
        • Single Sign-On
          • SSO Configuration
          • SSO Authorisation
        • 2-Factor Authentication
        • Password Reset
      • Display Rules in Practice
        • Label styling through Display Rules
      • Highlight and Select
    • iOS
      • Getting Started
        • Prerequisites
        • Set Up Your Environment
        • Display a Map
        • Search
        • Getting Directions
        • Migrating from v3 to v4
      • Directions
        • Directions Renderer
          • User's Location as Point of Origin
        • Wayfinding Instructions
          • See Route Element Details
        • Directions Service
        • Using multi-stop navigation
      • Searching
        • Searching on a Map
        • Creating a Search Experience
      • Caching & Offline Data
      • Displaying Objects
        • Application User Roles
        • Getting a Polygon from a Location
        • Location Details
        • Turn Off Collisions Based on Zoom Level
        • Enabling and Disabling features on the map
      • Custom Floor Selector
      • Change Building Outline Color
      • Custom Map Padding
      • Custom Properties
      • Display Rules in Practice
        • Label styling through Display Rules
      • Switching Solutions
      • Show User's Location aka. Blue Dot
        • Using Indoor Atlas
        • Using Cisco DNA Spaces
      • Highlight and Select
      • Display Language
    • React Native
      • Getting Started
        • Prerequisites
        • Project Setup
        • Displaying a Map
        • Creating a Search Experience
        • Getting Directions
        • Enabling Live Data
      • Showing Blue Dot
    • Flutter
      • Getting Started
        • Prerequisites
        • Create a New Project
        • Show a Map
        • Create a Search Experience
        • Getting Directions
      • Migration Guide
    • Integration API
      • Integration API Access
        • Access with Swagger
        • Access with Postman
        • Access with Python
        • Client credentials flow
      • Data Description
      • Reverse Geocoding
      • Route Access
      • OpenAPI Specification
    • Built-In Map Edits
      • Getting started
      • Authentication
      • Release notes
      • Reference docs
  • Products
    • Product Overview
    • CMS
      • Interface Overview
      • Display Rules
      • Media Library
        • 2D Models and Icons
        • 3D Models
      • Editing Data
      • Solution Settings
      • Settings
      • Data Concepts
      • User Roles
      • Route Network
        • Barrier Route Element
        • Door Route Element
      • Additional Location Details
    • Map Template
      • Getting Started
        • Web Component
        • React Component
      • Configuration
        • Query Parameters
      • Customization
      • Deploying Map Template to a cloud storage provider
      • 2D/3D Visibility Switch
      • External customization of the Map Template
      • Location Details configuration
      • Kiosk
        • QR code configuration
  • Other
    • Design
      • Standard MapsIndoors Map Style
      • Using a Custom Mapbox MapStyle
    • Changelog
      • Web SDK
        • V4
        • V3
      • Android SDK
        • V4
        • V3
      • iOS SDK
        • V4
        • V3
      • React Native SDK
      • Flutter SDK
      • MI Components
      • Map Template
    • Glossary
  • Legacy Docs
    • Android SDK V3
      • Getting Started
        • Prerequisites
        • Create a New Project
        • Show a Map
        • Create a Search Experience
        • Getting Directions
        • Enable Live Data
        • Integrating MapsIndoors into your own App
    • iOS SDK V3
      • Getting Started
        • Prerequisites
        • Set Up Your Environment
        • Display a Map
        • Search
        • Directions
        • Live Data
        • Integrating MapsIndoors into your own App
      • Inspect Route Element for iOS v3
      • Using Cisco DNA Spaces
      • Using Indoor Atlas
      • Switching Solutions
      • Show User's Location aka. Blue Dot
      • Application User Roles
      • Getting a Polygon from a Location
      • Location Details
  • MapsIndoors SDK Firewall
  • Google Analytics & Logging
  • Reference Docs
    • Web SDK
    • Android SDK
    • iOS SDK
    • React Native SDK
    • Flutter SDK
Powered by GitBook
On this page
  • Create an Xcode Project​
  • Installing the MapsIndoors SDK​
  • Adding API Credentials​

Was this helpful?

Export as PDF
  1. SDKS & Frameworks
  2. iOS
  3. Getting Started

Set Up Your Environment

Last updated 1 month ago

Was this helpful?

Now that you have taken care of all the preliminary issues, we can start building the app. Throughout this guide, you will continously modify this project to extend its functionality to cover a number of basic features.

Create an Xcode Project

We recommend using for following along. For this guide we will be using Xcode 15.4. Note that an iOS mobile device is not required, as Xcode allows the use of a simulator.

We start off by creating an Xcode project using the App template:

For the project settings, you can call it anything you like, however ensure the following settings are set to follow along easier:

  • Interface: Storyboard

  • Language: Swift

You should now have a project folder with the following files:

MapsIndoors can be installed using Swift Package Manger, CocoaPods or you can install the XCFrameworks manually if using Google Maps.

  1. Open your Xcode project or workspace, then go to File > Add Packages Dependencies....

  2. or

  3. Select the Dependency Rule you want to apply to the MapsIndoors SDK

    • A common choice for Dependency Rule is "Up to Next Major Version", specifying 4.9.0 as the minimum version. To instead install a specific version set the Dependency Rule field to "Exact Version" and insert the desired version. The latest version of the MapsIndoors SDK is 4.9.5.

  4. Hit enter or Click Add Package.

  5. In the new window select the MapsIndoorsMapbox or MapsIndoorsGoogleMaps library and click Add Package. Once SPM finishes installing the SDK you will see 3 new dependencies under Package Dependencies: MapsIndoors, MapsIndoorsCore, and MapsIndoorsMapbox or MapsIndoorsGoogleMaps (plus their respective dependencies).

  6. Click on your project's target, scroll down to Frameworks, Libraries, and Embedded Content and click the plus button.

  7. From the list select MapsIndoorsMapbox or MapsIndoorsGoogleMaps and click add.

Now you can use start using MapsIndoors in your project by using import MapsIndoors in your source code.

  1. Create a new Podfile in your project directory (same folder as your .xcodeproj) by running pod init <XCODEPROJECTNAME> in Terminal.

  2. Add your dependecies to the Podfile as follows (replace YOUR_APPLICATION_TARGET_NAME_HERE with your actual target name),

    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0' # Replace 15.0 with you iOS Minimum Deployment Target
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      # Remove the comment mark to use your map specific MapsIndoors pod
      # pod 'MapsIndoorsGoogleMaps', '~> 4.9'
      # or
      # pod 'MapsIndoorsMapbox11', '~> 4.9'
    end
  1. Save the Podfile and close Xcode.

  2. Open a terminal in the directory of the project. cd <path-to-project>

  3. Run pod install in the terminal.

  4. From this time onwards, use the .xcworkspace file to open the project.

  • Copy the following frameworks to the root folder of your app project (in Finder, not in Xcode)

    • GoogleMaps-8.4.0/Base/Frameworks/GoogleMapsBase.framework

    • GoogleMaps-8.4.0/Maps/Frameworks/GoogleMaps.framework

    • GoogleMaps-8.4.0/Maps/Frameworks/GoogleMapsCore.framework

  • In Xcode, drag the GoogleMaps.bundle from the GoogleMaps-8.4.0/Maps/Resources/GoogleMapsResources folder into the top level directory of your Xcode project. When prompted, ensure "Copy items if needed" is selected.

    • MapsIndoors

    • MapsIndoorsCore

    • MapsIndoorsGoogleMaps

  • Drag and drop the three MapsIndoors XCFrameworks into your Xcode project. In the dialog that pops up, choose “Copy items if needed” and make sure the XCFramework is added to your app target.

  • In Xcode, go to "General" and expand "Frameworks, Libraries, and Embedded Content" and make sure the three MapsIndoors XCFrameworks are marked as "Embed & Sign".

  • In Xcode, go to "Build Settings" for your target and make sure the following entries are present in the FRAMEWORK_SEARCH_PATHS

$(inherited)
$(PROJECT_DIR)/**

This "Getting Started" guide is created using a specific version of the SDK. When moving beyond the "Getting Started" guide, please be sure to use the latest version of the SDK.

Open back up the project and navigate to the file AppDelegate.swift.

  1. Add the following import statements to the top of the file:

import MapboxMaps  
import MapsIndoorsCore
  1. Insert the following into the application(_:didFinishLaunchingWithOptions:) method. If you are using Mapbox then provide your API Key when you add your map to the view inside viewDidLoad() in your ViewController.swift:

ResourceOptions(accessToken: "YOUR_MAPBOX_API_KEY")
let initOptions = MapInitOptions(resourceOptions: myResourceOptions, styleURI: StyleURI.light)
self.mapView = MapView(frame: view.bounds, mapInitOptions: initOptions)
// Set the MPMapConfig
MPMapConfig(mapBoxView: mapView!, accessToken: "---")
Task {
    await MPMapsIndoors.shared.load(apiKey:"YOUR_MAPSINDOORS_API_KEY")
}

Finally, remember to replace YOUR_MAPBOX_API_KEY with your Mapbox Access Token and YOUR_MAPSINDOORS_API_KEY with your MapsIndoors API key (or use the demo key mapspeople3d).

  1. Add the following import statements to the top of the file:

import GoogleMaps  
import MapsIndoorsCore
  1. Insert the following into the application(_:didFinishLaunchingWithOptions:) method. If you are using Mapbox then provide your API Key when you add your map to the view inside viewDidLoad() in your ViewController.swift:

GMSServices.provideAPIKey("YOUR_GOOGLE_API_KEY")

Finally, remember to replace YOUR_GOOGLE_API_KEY with your Google API key.

Installing the MapsIndoors SDK

In the search bar in the top right corner, enter (to use Mapbox Maps)

(to use Google Maps)

If you're using Mapbox, make sure to configure your secret token in order to download the required dependencies from Mapbox when installing the Swift Package:

If you're using Mapbox, make sure to configure your secret token in order to download the required dependencies from Mapbox when running pod install:

If you are upgrading from a version previous to 4.6.0 you must remove the post_install script parts previously required by MapsIndoors .

Download the

Download and unzip the following MapsIndoors SDK v4 XCFrameworks from the :

Adding API Credentials

​
https://github.com/MapsPeople/mapsindoors-mapbox-ios.git
https://github.com/MapsPeople/mapsindoors-googlemaps-ios.git
https://docs.mapbox.com/ios/maps/guides/install/#configure-credentials
https://docs.mapbox.com/ios/maps/guides/install/#configure-credentials
for Google Maps
Google Maps iOS SDK 8.4.0
latest release
​
​
Xcode