← Back to Skills Marketplace
🔌

Mapbox iOS Patterns

by Mapbox · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
99
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install mapbox-ios-patterns
Description
Official integration patterns for Mapbox Maps SDK on iOS. Covers installation, adding markers, user location, custom data, styles, camera control, and featur...
README (SKILL.md)

Mapbox iOS Integration Patterns

Official patterns for integrating Mapbox Maps SDK v11 on iOS with Swift, SwiftUI, and UIKit.

Use this skill when:

  • Installing and configuring Mapbox Maps SDK for iOS
  • Adding markers and annotations to maps
  • Showing user location and tracking with camera
  • Adding custom data (GeoJSON) to maps
  • Working with map styles, camera, or user interaction
  • Handling feature interactions and taps

Official Resources:


Installation & Setup

Requirements

  • iOS 12+
  • Xcode 15+
  • Swift 5.9+
  • Free Mapbox account

Step 1: Configure Access Token

Add your public token to Info.plist:

\x3Ckey>MBXAccessToken\x3C/key>
\x3Cstring>pk.your_mapbox_token_here\x3C/string>

Get your token: Sign in at mapbox.com

Step 2: Add Swift Package Dependency

  1. File → Add Package Dependencies
  2. Enter URL: https://github.com/mapbox/mapbox-maps-ios.git
  3. Version: "Up to Next Major" from 11.0.0
  4. Verify four dependencies appear: MapboxCommon, MapboxCoreMaps, MapboxMaps, Turf

Alternative: CocoaPods or direct download (install guide)


Map Initialization

SwiftUI Pattern (iOS 13+)

Basic map:

import SwiftUI
import MapboxMaps

struct ContentView: View {
    @State private var viewport: Viewport = .camera(
        center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194),
        zoom: 12
    )

    var body: some View {
        Map(viewport: $viewport)
            .mapStyle(.standard)
    }
}

With ornaments:

Map(viewport: $viewport)
    .mapStyle(.standard)
    .ornamentOptions(OrnamentOptions(
        scaleBar: .init(visibility: .visible),
        compass: .init(visibility: .adaptive),
        logo: .init(position: .bottomLeading)
    ))

UIKit Pattern

import UIKit
import MapboxMaps

class MapViewController: UIViewController {
    private var mapView: MapView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let options = MapInitOptions(
            cameraOptions: CameraOptions(
                center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194),
                zoom: 12
            )
        )

        mapView = MapView(frame: view.bounds, mapInitOptions: options)
        mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        view.addSubview(mapView)

        mapView.mapboxMap.loadStyle(.standard)
    }
}

Add Markers (Point Annotations)

Point annotations are the most common way to mark locations on the map.

SwiftUI:

Map(viewport: $viewport) {
    PointAnnotation(coordinate: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194))
        .iconImage("custom-marker")
}

UIKit:

// Create annotation manager (once, reuse for updates)
var pointAnnotationManager = mapView.annotations.makePointAnnotationManager()

// Create marker
var annotation = PointAnnotation(coordinate: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194))
annotation.image = .init(image: UIImage(named: "marker")!, name: "marker")
annotation.iconAnchor = .bottom

// Add to map
pointAnnotationManager.annotations = [annotation]

Multiple markers:

let locations = [
    CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194),
    CLLocationCoordinate2D(latitude: 37.7849, longitude: -122.4094),
    CLLocationCoordinate2D(latitude: 37.7649, longitude: -122.4294)
]

let annotations = locations.map { coordinate in
    var annotation = PointAnnotation(coordinate: coordinate)
    annotation.image = .init(image: UIImage(named: "marker")!, name: "marker")
    return annotation
}

pointAnnotationManager.annotations = annotations

Show User Location

Step 1: Add location permission to Info.plist:

\x3Ckey>NSLocationWhenInUseUsageDescription\x3C/key>
\x3Cstring>Show your location on the map\x3C/string>

Step 2: Request permissions and show location:

import CoreLocation

// Request permissions
let locationManager = CLLocationManager()
locationManager.requestWhenInUseAuthorization()

// Show user location puck
mapView.location.options.puckType = .puck2D()
mapView.location.options.puckBearingEnabled = true

Performance Best Practices

Reuse Annotation Managers

// ❌ Don't create new managers repeatedly
func updateMarkers() {
    let manager = mapView.annotations.makePointAnnotationManager()
    manager.annotations = markers
}

// ✅ Create once, reuse
let pointAnnotationManager: PointAnnotationManager

init() {
    pointAnnotationManager = mapView.annotations.makePointAnnotationManager()
}

func updateMarkers() {
    pointAnnotationManager.annotations = markers
}

Batch Annotation Updates

// ✅ Update all at once
pointAnnotationManager.annotations = newAnnotations

// ❌ Don't update one by one
for annotation in newAnnotations {
    pointAnnotationManager.annotations.append(annotation)
}

Memory Management

// Use weak self in closures
mapView.gestures.onMapTap.observe { [weak self] context in
    self?.handleTap(context.coordinate)
}.store(in: &cancelables)

// Clean up on deinit
deinit {
    cancelables.forEach { $0.cancel() }
}

Use Standard Style

// ✅ Standard style is optimized and recommended
.mapStyle(.standard)

// Use other styles only when needed for specific use cases
.mapStyle(.standardSatellite) // Satellite imagery

Troubleshooting

Map Not Displaying

Check:

  1. MBXAccessToken in Info.plist
  2. ✅ Token is valid (test at mapbox.com)
  3. ✅ MapboxMaps framework imported
  4. ✅ MapView added to view hierarchy
  5. ✅ Correct frame/constraints set

Style Not Loading

mapView.mapboxMap.onStyleLoaded.observe { [weak self] _ in
    print("Style loaded successfully")
    // Add layers and sources here
}.store(in: &cancelables)

Performance Issues

  • Use .standard style (recommended and optimized)
  • Limit visible annotations to viewport
  • Reuse annotation managers
  • Avoid frequent style reloads
  • Batch annotation updates

Reference Files

Load these references when the task requires deeper patterns:

  • references/annotations.md — Circle, Polyline, Polygon Annotations
  • references/location-tracking.md — Camera Follow User + Get Current Location
  • references/custom-data.md — GeoJSON: Lines, Polygons, Points, Update/Remove
  • references/camera-styles.md — Camera Control + Map Styles
  • references/interactions.md — Featureset Interactions, Custom Layer Taps, Long Press, Gestures

Additional Resources

Usage Guidance
This skill is a documentation/reference pack for integrating Mapbox Maps SDK on iOS and appears coherent. Before using in your app: (1) confirm you use a public Mapbox token (pk.*) as recommended — do not embed secret keys in Info.plist or source control; (2) audit any location-permission flows you implement and add clear privacy text for users; (3) follow the official Mapbox SDK repository link in the docs when adding dependencies; and (4) review and test the suggested code in your app context (especially permission handling and data sources) before shipping.
Capability Analysis
Type: OpenClaw Skill Name: mapbox-ios-patterns Version: 1.0.0 The skill bundle provides legitimate integration patterns and documentation for the Mapbox Maps SDK v11 on iOS. All code snippets (Swift/SwiftUI) and instructions in SKILL.md, AGENTS.md, and the reference files are consistent with official Mapbox documentation, and no indicators of data exfiltration, malicious execution, or harmful prompt injection were found.
Capability Assessment
Purpose & Capability
Name/description (Mapbox iOS patterns) match the content: Swift/SwiftUI/UIView examples, installation guidance, annotations, location, styles and interactions. There are no unrelated environment variables, binaries, or services requested.
Instruction Scope
Instructions focus on adding the Mapbox SDK and using it. They recommend placing a public MBXAccessToken in Info.plist and asking for iOS location permissions (NSLocationWhenInUseUsageDescription). Both are expected for this purpose, but note: the skill explicitly instructs requesting runtime location access (normal for map apps) and storing a public token in Info.plist — do not store secret keys or private tokens here.
Install Mechanism
No install spec or downloadable code is provided; the skill is instruction-only and references using Swift Package Manager/CocoaPods to add the official Mapbox repo. No suspicious URLs or archive installs are present (the repository URL referenced is the official GitHub).
Credentials
The skill requires no environment variables, secrets, or config paths. The only credential discussed is the Mapbox public access token (MBXAccessToken) which is appropriate and proportional for Mapbox SDK integration.
Persistence & Privilege
The skill is not always-enabled and is user-invocable with normal model invocation. It does not request elevated persistence or modify other skills/configuration.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install mapbox-ios-patterns
  3. After installation, invoke the skill by name or use /mapbox-ios-patterns
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of official Mapbox Maps SDK integration patterns for iOS. - Covers installation, setup, map initialization (SwiftUI & UIKit), and adding markers. - Includes patterns for user location, camera control, styles, and handling feature interactions. - Offers best practices for annotation management and performance. - Troubleshooting tips and references for deeper usage patterns provided. - Links to official documentation, API reference, examples, and guides.
Metadata
Slug mapbox-ios-patterns
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Mapbox iOS Patterns?

Official integration patterns for Mapbox Maps SDK on iOS. Covers installation, adding markers, user location, custom data, styles, camera control, and featur... It is an AI Agent Skill for Claude Code / OpenClaw, with 99 downloads so far.

How do I install Mapbox iOS Patterns?

Run "/install mapbox-ios-patterns" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Mapbox iOS Patterns free?

Yes, Mapbox iOS Patterns is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Mapbox iOS Patterns support?

Mapbox iOS Patterns is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Mapbox iOS Patterns?

It is built and maintained by Mapbox (@mapbox); the current version is v1.0.0.

💬 Comments