Reference/Distribution
Distributionstatelessdistribution

MapplsCamera SDK for iOS

mappls-camera-ios-distribution

A versioned iOS distribution package used to integrate maps, search places, tracking telematics, offline automotive, capture feedback, identity platform into an application.

Integration notice

This repository distributes a package rather than defining the complete product contract. Pair it with the owning SDK or product guide.

What this surface enables

A versioned iOS distribution package used to integrate maps, search places, tracking telematics, offline automotive, capture feedback, identity platform into an application.

Why this source is classified stateless

No durable provider record or application workflow contract was established from the source identity or bounded document evidence; view, camera, callback, and authentication sessions alone do not make a source stateful.

Authority: Conservative Default · No durable-state signal promoted from incidental vocabulary
Platforms

iOS

Product areas

MapsSearch PlacesTracking TelematicsOffline AutomotiveCapture FeedbackIdentity Platform

Languages found

Swift

Authentication signals

Api KeySigned Request

Prepare the integration

  1. An iOS project with Xcode and the package manager required by the source release
  2. A Mappls project key restricted to the intended app, domain, or backend
  3. The corresponding product entitlement enabled for the developer application
Production guardrailsPin package versions and record the source fingerprint.Keep server credentials out of client binaries and logs.Test failures, timeouts, quota limits, upgrades, and rollback.Validate legacy examples against current authentication contracts.

Setup and usage examples

These examples were extracted from the canonical public source document and sanitized for credential-like values. Check the source branch and package version before copying into a production application.

mappls-camera-ios-distribution examples
https://github.com/mappls-api/mappls-camera-ios-distribution.git

Topics documented by the source

01Introduction

MapplsCamera SDK is a powerful, ready-to-use camera unit for iOS that automatically captures and embeds rich geospatial metadata into photos and videos. It handles complex tasks like reverse geocoding, GPS overlay rendering, and EXIF/XMP metadata management, allowing you to integrate high-quality, geotagged media capture with minimal effort.

02Features

• Rich Geotagged Photos: Captures images with configurable GPS/Address/Timestamp overlays - Geotagged Video Recording: Records video with real-time location metadata updates - QR Code Scanning: Built-in QR mode for asset identification or URL scanning - Mappls PIN Integration: Automatically retrieves Mappls PINs (eLocs) for capture locations - Advanced Metadata: Embeds metadata into EXIF, XMP (custom namespace), and IPTC headers - Deeply Customizable: Extensive UI configuration options for overlays, branding, and camera controls - Developer Friendly: Robust delegate-based event handling and error reporting

03Dependencies

This library depends upon several Mappls's own libraries. All dependent libraries will be automatically installed using Swift Package Manager.

Below are list of dependencies which are required to run this SDK: - MapplsAPICore - Authorization and Authentcation - MapplsAPIKit - Core API functionality - MapplsMap - Map display and location services

04Swift Package Manager

To add a package dependency to your Xcode project, select File > Swift Packages > Add Package Dependency and enter repository URL. See Adding Package Dependencies to Your App.

05Requirements

• iOS: 13.0 or higher - Xcode: 14.0 or higher - Mappls API Keys: You must have a valid Mappls API key to use the location and mapping features

06MapplsAPICore

It is required to set Mappls authentication information to use any Mappls SDK. Please refer the documentation here

07Required Permissions

Ensure you add the following keys to your app's Info.plist to request necessary permissions:

| Key | Description | | NSCameraUsageDescription | Required for taking photos and recording videos | | NSMicrophoneUsageDescription | Required for recording audio in videos | | NSLocationWhenInUseUsageDescription | Required to geotag your media and show your location on the map | | NSPhotoLibraryUsageDescription | Required if saveToDeviceGallery is enabled | | NSPhotoLibraryAddUsageDescription | Required to save captured media to the user's gallery |

08Sample Code

The package includes multiple ways to test and use the SDK:

09Option 1: Use Sample Library

Sample code is available as a library for integration:

10Option 2: Configuration Presets

Pre-built configurations for common use cases:

| Method | Description | Use Case | | basic() | Default settings | Quick start | | photoOnly() | Photo mode only | Image documentation | | videoOnly() | Video mode only | Video surveys | | highAccuracy() | Requires GPS ≤10m | Precision mapping | | fieldSurvey() | All metadata + grid | Field work | | qrScanner() | QR code mode | Asset tracking | | highQuality() | 4K, max quality | Professional use | | minimalUI() | Hidden controls | Embedded use | | privacyFocused() | Minimal metadata | Privacy apps |

11Sample Resources

| Guide | Time | Best For | | RUNEXECUTABLESAMPLE.md | 5 min | See all features immediately | | QUICKSTARTSAMPLE.md | 5 min | First-time integration | | HOWTORUNSAMPLE.md | 10 min | Complete integration guide | | SAMPLEUSAGE.md | 15 min | Detailed usage examples |

12Configuration API Reference

MapplsCameraViewController provides a wide range of properties to customize the capture experience.

13General Configuration

| Property | Type | Default | Description | | minimumAccuracyMetres | Float | 50.0 | Minimum GPS accuracy required to allow capture | | blockCaptureOnPoorAccuracy | Bool | false | If true, prevents capture when accuracy is worse than threshold | | saveToDeviceGallery | Bool | true | Automatically save captured media to the iOS Photo Library | | enablePinchToZoom | Bool | true | Enable or disable the pinch-to-zoom gesture | | maxZoomFactor | Float | 8.0 | Maximum zoom level allowed |

14Button Visibility

| Property | Type | Default | Description | | isFlashButtonHidden | Bool | false | Hide the flash toggle button | | isLocationPickerButtonHidden | Bool | false | Hide the nearby places / location picker button | | isMuteButtonHidden | Bool | false | Hide the audio mute button in video mode | | isGalleryButtonHidden | Bool | false | Hide the gallery / album shortcut button | | isSwitchCameraButtonHidden | Bool | false | Hide the front/rear camera switch button | | isQRScanModeHidden | Bool | false | Hide the QR scan mode toggle | | isVideoModeEnable | Bool | false | Disable video recording mode | | isPhotoModeEnable | Bool | false | Disable photo capture mode | | allowModeSwitching | Bool | true | Show/hide the mode selector (Photo/Video/QR) |

15Overlay Content

| Property | Type | Default | Description | | showAddressOverlay | Bool | true | Display reverse geocoded address on media | | showCoordinatesOverlay | Bool | true | Display Latitude/Longitude on media | | showDateTimeOverlay | Bool | true | Display capture timestamp on media | | showMapThumbnail | Bool | true | Display a map preview of the location | | showElocationOverlay | Bool | true | Display the Mappls PIN (eLoc) on media | | showQRCodeOverlay | Bool | true | Display a QR code containing location info | | showAccuracyIndicator | Bool | true | Show GPS accuracy value on the overlay | | showAltitudeOverlay | Bool | false | Show altitude (elevation) on the overlay | | showCompassBearingOverlay | Bool | false | Show compass heading on the overlay | | showMapplsLogo | Bool | true | Show the Mappls watermark logo | | showGridLines | Bool | false | Display 3x3 grid lines for composition |

16UI Styling

| Property | Type | Default | Description | | overlayPosition | Enum | .bottom | Position of the metadata view (.top or .bottom) | | overlayOpacity | Float | 0.8 | Background opacity of the metadata overlay (0.0 to 1.0) | | overlayBackgroundColour | UIColor| .white | Background color of the metadata overlay | | overlayTextColour | UIColor| .black | Color of the text in the metadata overlay | | overlayCornerRadius | Float | 8.0 | Corner radius for the metadata overlay background | | mapThumbnailStyle | Enum | .standard | Style of the map thumbnail (.standard, .satellite, .hybrid) | | brandingLogo | UIImage? | nil | Custom logo image to display on the metadata overlay |

17Media Settings

| Property | Type | Default | Description | | cameraFacing | Enum | .rear | Initial camera to use (.front or .rear) | | defaultMediaMode | Enum | .photo | Initial capture mode (.photo, .video, .qr) | | imageOutputFormat | Enum | .jpeg | Format for saved photos (.jpeg or .png) | | imageCompressionQuality| Float | 0.92 | Compression quality for JPEG (0.0 to 1.0) | | videoResolution | Enum | .hd1080p | Quality for video (.hd720p, .hd1080p, .uhd4k) | | timerDelay | Enum | .none | Countdown delay (.none, .threeSeconds, .tenSeconds) | | maxVideoDuration | Int | 0 | Maximum recording time in seconds (0 = unlimited) | | videoOverlayRefreshInterval| Int | 5 | How often (in seconds) to update GPS info during video |

18Advanced Settings

| Property | Type | Default | Description | | addressLanguage | String | "en" | Language for reverse geocoded addresses (e.g., "en", "hi") |

19MapplsCameraResult

The result object passed to delegate methods contains comprehensive metadata:

| Property | Type | Description | | mediaType | Enum | .image or .video | | filePath | String | Local path to the captured file | | latitude | Double | Decimal latitude coordinate | | longitude | Double | Decimal longitude coordinate | | formattedAddress | String | Human-readable reverse geocoded address | | eloc | String | Mappls unique identifier for the location | | timestampFormatted | String | Formatted date and time string | | accuracyMetres | Float | GPS horizontal accuracy at time of capture | | cameraFacing | Enum | .front or .rear | | tamperHash | String | A digital signature to verify media integrity |

20Error Handling

Implement the delegate method to handle potential issues:

21Additional Resources

• API Configuration Guide: APICONFIGURATION.md - Dependencies Information: DEPENDENCIES.md - Integration Guide: INTEGRATIONGUIDE.md - Mappls API Console: https://auth.mappls.com/console/

22Our many happy customers:

For any queries and support, please contact:

Email us at apisupport@mappls.com

Support Need support? contact us!

[](https://about.mappls.com/blog/)[](https://github.com/mappls-api)

[](https://twitter.com/mappls)[](https://www.linkedin.com/company/mappls/)[](https://www.youtube.com/channel/UCAWvWsh-dZLLeUU7J9HiOA)

@ Copyright 2025 CE Info Systems Pvt. Ltd. All Rights Reserved.

Service references found

URLs are sanitized during ingestion and may include documentation or legacy hosts. Use them to trace the source, not as a substitute for the current API contract.

https://www.mapmyindia.com/apihttps://github.com/mappls-api/mappls-ios-sdkhttps://github.com/mappls-api/mappls-map-ioshttps://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app).https://github.com/mappls-api/mappls-camera-ios-distribution.githttps://github.com/mappls-api/mappls-ios-sdk/blob/main/docs/v2.0.1/MapplsAPICore.mdhttps://auth.mappls.com/console/](https://auth.mappls.com/console/https://www.mapmyindia.com/api/img/logos1/PhonePe.png)![](https://www.mapmyindia.com/api/img/logos1/Arya-Omnitalk.png)![](https://www.mapmyindia.com/api/img/logos1/delhivery.png)![](https://www.mapmyindia.com/api/img/logos1/hdfc.png)![](https://www.mapmyindia.com/api/img/logos1/TVS.png)![](https://www.mapmyindia.com/api/img/logos1/Paytm.png)![](https://www.mapmyindia.com/api/img/logos1/FastTrackz.png)![](https://www.mapmyindia.com/api/img/logos1/ICICI-Pru.png)![](https://www.mapmyindia.com/api/ihttps://about.mappls.com/api/https://about.mappls.com/contact/https://stackoverflow.com/questions/tagged/mappls-api)[![](https://www.mapmyindia.com/api/img/icons/blog.png)](https://about.mappls.com/blog/)[![](https://www.mapmyindia.com/api/img/icons/gethub.png)](https://github.com/mappls-api)[https://www.npmjs.com/org/mapmyindiahttps://www.facebook.com/Mapplsofficial)[![](https://www.mapmyindia.com/june-newsletter/icon2.png)](https://twitter.com/mappls)[![](https://www.mapmyindia.com/newsletter/2017/aug/llinkedin.png)](https://www.linkedin.com/company/mappls/)[![](https://www.mapmyindia.com/june-newsletter/icon3.png)](https://www.youtube.com/channel/UCAWvWsh-dZLLeUU7_J9HiOAhttps://about.mappls.com/api/terms-&-conditionshttps://www.mappls.com/about/privacy-policyhttps://www.mappls.com/pdf/mappls-sustainability-policy-healt-labour-rules-supplir-sustainability.pdf