Skip to main content
Version: 1.x (beta)

Getting Started with Wemap SDKs

Location tracking, routing, and navigation for iOS.

Overview​

The Wemap SDKs provide comprehensive location, routing, and navigation capabilities for iOS apps. They are distributed as several frameworks that share a single session:

  • WemapCoreSDK — common types and the foundation for all other SDKs (API access, routing, POIs).
  • WemapMapSDK — customizable, interactive maps built on MapLibre.
  • WemapGeoARSDK — augmented-reality navigation and points of interest.
  • WemapPositioningSDK — indoor/outdoor positioning, see Choosing a Location Source:
    • VPS — visual positioning system, camera-based (best for indoor).
    • GPS — global positioning system (best for outdoor).
  • WemapMapWidgetsSDK — ready-made map controls in SwiftUI and UIKit: the levels rail, the itinerary form and the points-of-interest sheet, see Map Widgets Getting Started. Distributed separately — see Map widgets under Installation.

Each framework has its own reference and getting-started guide — see the Frameworks list below.

Upgrading from 0.x​

v1 is a breaking release. Migrating to v1 walks through it in twelve steps, each of which leaves your project compiling, and ends with an index from compiler error to step number.

Requirements​

Wemap SDKXcodeSwiftiOS
1.x26.0+6.2+15.5+

The SDKs ship as binary XCFrameworks. A binary Swift framework can only be consumed by the toolchain that built it and newer, so Xcode 26.0 / Swift 6.2 is the minimum — earlier Xcode versions cannot build against the binaries.

Installation​

Add the SDK as a dependency via Swift Package Manager. It is not published to CocoaPods: the last pod is 1.0.0-beta.1 — Migrating to v1 step 1 moves a Podfile to SPM.

Important

v1 ships as a pre-release first — 1.0.0-beta.N. A pre-release is invisible to a version range: Up to Next Minor/Major Version in Xcode will never resolve it, so you cannot upgrade into the beta by accident and you cannot stay on it by accident either. To use a beta, pin the exact version — Exact Version in Xcode, or:

.package(url: "https://github.com/wemap/wemap-sdk-ios-distribution.git", exact: "1.0.0-beta.2")

The public API can still change between betas. Switch to a dependency rule once 1.0.0 is out.

Swift Package Manager​

  1. In Xcode, choose File > Add Package Dependencies….

  2. Enter the URL https://github.com/wemap/wemap-sdk-ios-distribution.

  3. Choose a dependency rule (we recommend Up to Next Minor Version from the latest release).

  4. Add the package to your app target.

    Adding the Wemap package in Xcode

Map widgets​

WemapMapWidgetsSDK ships from its own package, https://github.com/wemap/wemap-sdk-ios-widgets-distribution, on a 0.x version line: any release may change its API, so pin the Exact Version. Each widgets release depends on one exact release of the SDKs and resolves it for you; add wemap-sdk-ios-distribution at that same version, or leave it out.

.package(url: "https://github.com/wemap/wemap-sdk-ios-widgets-distribution.git", exact: "0.2.0")

Creating a session​

Every Wemap SDK is driven by a session, which loads a map's data once and owns the shared state the SDKs build on (routing, POIs, positioning). Create one session and pass it to each component you use. You need a mapID and a token — contact the Wemap team.

import WemapCoreSDK

// WemapCoreSDK alone (API access, no rendering):
let session = try await CoreSession(mapID: 19158, token: "YOUR_TOKEN", config: SessionConfig(environment: .prod))
import WemapMapSDK

// Map rendering — create a MapSession and pass it to a MapView:
let session = try await MapSession(mapID: 19158, token: "YOUR_TOKEN")
let mapView = MapView(frame: view.bounds, session: session, config: MapViewConfig())

The same session can be passed to positioning sources and the AR view, keeping routing, POIs, and user location consistent across every SDK.

Examples​

For sample implementations, see the official sample-apps repository.

Topics​

Frameworks​

Migrating​

Guides​