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

Getting started

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:
    • VPS — visual positioning system, camera-based (best for indoor).
    • GPS — global positioning system (best for outdoor).

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

Upgrading from 0.x​

v1 is a breaking release. migration guide 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.0+

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 or CocoaPods.

Important: v1 ships as a pre-release first — 1.0.0-beta.N. A pre-release is invisible to a version range: neither Up to Next Minor/Major Version in Xcode nor pod '~> 1.0' will ever 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.1")
pod 'WemapMapSDK', '1.0.0-beta.1'

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

CocoaPods​

use_frameworks!

target 'YourApp' do
pod 'WemapMapSDK', '<version>' # interactive maps
pod 'WemapGeoARSDK', '<version>' # AR navigation
pod 'WemapPositioningSDK/VPSARKit', '<version>' # VPS (indoor)
pod 'WemapPositioningSDK/GPS', '<version>' # GPS (outdoor)
end

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

// CoreSDK 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​