Mappedin React Native SDK - v6.0.0-alpha.12

@mappedin/react-native-sdk

Mappedin SDK for React Native SDK enables integration of Mappedin's indoor mapping and navigation capabilities into React Native applications. This SDK provides a native wrapper around Mappedin's web-based mapping technology using WebView for cross-platform compatibility.

  • 📱 Cross-Platform - Write once, deploy everywhere with confidence
  • 🎯 Interactive Indoor Maps - Smooth zoom, pan, and rotation controls that feel natural
  • 🧭 Smart Navigation & Wayfinding - Clear turn-by-turn directions your users will love
  • 📍 Points of Interest - Beautifully showcase venue locations and amenities
  • Event-Driven - Comprehensive event system for seamless interactions
npm install @mappedin/react-native-sdk

or

yarn add @mappedin/react-native-sdk

This package requires the following peer dependencies:

npm install react react-native react-native-webview

Get your first map up and running in just a few minutes:

import React, { useEffect } from 'react';
import { View, StyleSheet } from 'react-native';
import { MapView, useMap } from '@mappedin/react-native-sdk';

const MapSetup = () => {
const { mapData, mapView } = useMap();

useEffect(() => {
if (mapData && mapView) {
console.log('Map is ready!');

async function initializeMap() {
// Display all venue labels
mapView.Labels.all();

// Expand stacked maps with automatic spacing
await mapView.StackedMaps.expand({
distanceBetweenFloors: 'auto',
});

// Optional: Create a smooth tour through all spaces
for (const space of mapData.getByType('space')) {
await mapView.Camera.focusOn(space, {
duration: 1000,
easing: 'ease-in-out',
});
}
}

initializeMap();
}
}, [mapData, mapView]);

return null;
};

// Add your Mappedin key, secret and map ID or use a demo key and map
// Demo Key & Maps: https://developer.mappedin.com/docs/demo-keys-and-maps
const App = () => {
return (
<View style={styles.container}>
<MapView
options={{}}
mapData={{
key: 'your-mappedin-key',
secret: 'your-mappedin-secret',
mapId: 'your-map-id',
}}
>
<MapSetup />
</MapView>
</View>
);
};

const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#f0f8ff',
},
});

export default App;
import React from 'react';
import { MapView, useMap } from '@mappedin/react-native-sdk';

const CustomMapComponent = () => {
const { mapData, mapView } = useMap();

const handleSpaceClick = async space => {
// Focus on clicked space with smooth animation
await mapView.Camera.focusOn(space, {
duration: 1500,
easing: 'ease-out',
});
};

// Add your Mappedin key, secret and map ID or use a demo key and map
// Demo Key & Maps: https://developer.mappedin.com/docs/demo-keys-and-maps
return (
<MapView
style={{ flex: 1 }}
mapData={{
key: 'mik_your_key_here',
secret: 'mis_your_secret_here',
mapId: 'your_map_id_here',
}}
options={
{
// Custom options go here
}
}
>
{/* Your custom map setup logic */}
</MapView>
);
};

The main component that renders your indoor map with powerful mapping capabilities.

Props:

  • mapData - Configuration object containing your Mappedin credentials
  • options - Additional map configuration options
  • style - ViewStyle for the map container
  • children - Custom components to render within the map context

Access map data and view controls from any child component.

Returns:

  • mapData - Venue data and spatial information
  • mapView - Map control methods and interactions
// Camera Controls
await mapView.Camera.focusOn(target, options);

// Labels
mapView.Labels.all(); // Show all labels
mapView.Labels.hide(); // Hide all labels

// Stacked Maps
await mapView.StackedMaps.expand({
distanceBetweenFloors: 'auto' | number,
});

Check out our example app in apps/rn-example/ for more detailed implementations, including:

  • Basic map initialization
  • Custom styling and theming
  • Navigation and routing
  • Event handling
  • Advanced interactions

See LICENSE.txt for license information.