Add a map to your mobile app
The Metamaps SDK embeds maps in iOS, Android, and Flutter apps. Pass a mapSlug to display a map with search, spots, floor switching, and routes. Changes published from the admin console also reach the map in your app.
Choose your platform
| Platform | What the guide covers | Installation guide |
|---|---|---|
| iOS | Local Swift package, UIKit, Info.plist, and events | iOS SDK |
| Android | Local Maven repository, Gradle, MapView, and events | Android SDK |
| Flutter | Path dependency, native setup, Widget, and Controller | Flutter SDK |
The installation guides use the same source documents as the public SDK. Read OS and toolchain requirements, installation code, permissions, and update instructions here.
Display your first map
- Get the SDK from the public repository.
- Follow your platform's guide to add dependencies and configure your app.
- Set the published map's slug as
mapSlug, then add the map view or widget to your screen. - Wait for the ready event before selecting a floor, showing a spot, or changing the destination.
If the public URL is https://metamaps.jp/d/example, set mapSlug to example. You do not need an integration API key to display a published map.
Current location with GPS
If the map uses GPS for the current location, the map reads the device location when the user starts it, for example by tapping the location button. On iOS, the system asks for location permission the first time. On Android, declare ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION. When the permission has not been granted yet, the map view asks your app through permissionRequestHandler (in Flutter, onPermissionRequest), and your app decides whether to show the system dialog; the SDK never shows it on its own. If the permission stays denied, the map view sends an error event whose userAction tells you what guidance to show. Check each platform's guide for the exact declarations.
Voice input
The map's search field and AI chat accept voice input. On iOS, add the microphone and speech recognition purpose strings; without them, the map hides its microphone button. On Android, declare RECORD_AUDIO to show the microphone button. When the user taps it before the permission is granted, the map view asks your app in the same way as for location; without a handler, the request is denied. Check each platform's guide for the exact declarations.
Sharing, text size, and the voice guide
- The map's share buttons open the system share sheet on both platforms. Your app needs no code for this.
- The map's text keeps the same size regardless of the system font size setting, on both platforms.
- The map's voice guide pauses when your app moves to the background or the screen locks, and does not resume on its own. Playing it in the background is planned for a later SDK version.
Optional indoor positioning
If a facility has installed beacons and enabled positioning in Metamaps, the SDK can show the user's location and accuracy circle. You do not need to enable positioning to display maps. Check each platform's guide for the required permission declarations and purpose strings.
Positioning supports foreground use. It stops when the app moves to the background or the screen locks, and resumes when the app returns to the foreground. The public SDK also provides headless positioning for apps that use their own map UI.
Initial view and map controls
The query parameter reference covers the initial floor, center, spot, and route. After the map is displayed, use the platform's selectFloor, showSpot, setDestination, and setLanguage methods as described in its guide.
When the user opens a spot, the map adds a step to its history, as the web map does in a browser. Connect your app's back handling to the map's canGoBack and goBack() so that back closes that step first: on Android with an OnBackPressedCallback, and in Flutter with PopScope. The SDK does not register a back handler itself, so without this the Android back button closes your screen together with the map. On iOS, use them if your screen has its own back control.
Distribution and releases
Source code, samples, release tags, change history, and licenses are maintained in the public SDK repository. Each installation guide includes an update workflow. Review the changelog before updating the SDK.