Ga naar hoofdinhoud

MapView

react-native-maps zorgt voor een interactieve kaart in React Native. We kunnen hiermee een kaart tonen en markers op de kaart plaatsen.

Installatie

react-native-maps is een externe library die we moeten installeren. We kunnen dit doen met de expo install commando:

npx expo install react-native-maps

Gebruik

Om heel eenvoudig een kaart te tonen in React Native moeten we de MapView component gebruiken. Deze component heeft een region prop die we kunnen gebruiken om de initiele regio van de kaart te bepalen. We willen deze dynamisch maken, dus we zullen de region prop binden aan een state variabele.

latitudeDelta en longitudeDelta bepalen hoeveel van de kaart we willen tonen. Hoe kleiner deze waarden, hoe meer van de kaart we zien.

import React, { useState } from "react";
import { View, Text, Button } from "react-native";
import MapView, { Region, Coordinate } from "react-native-maps";
const App = () => {
let [wonder, setWonder] = useState<WorldWonder>(worldWonders[0]);

const showRandomWonder = () => {
let randomIndex = Math.floor(Math.random() * worldWonders.length);
setWonder(worldWonders[randomIndex]);
};
return (
<View style={{ flex: 1 }}>
<MapView
style={{ flex: 1 }}
region={{
latitude: wonder.latitude,
longitude: wonder.longitude,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
}}
/>
<Button title="Set random location" onPress={showRandomWonder} />
</View>
);
};

export default App;

Markers

We kunnen markers op de kaart plaatsen door de Marker component te gebruiken. Deze component heeft een coordinate prop die we kunnen gebruiken om de positie van de marker te bepalen. We gaan in volgend voorbeeld een marker plaatsen op de kaart per wereldwonder.

import React, { useState } from "react";
import { View, Text, Button } from "react-native";
import MapView, { Region, Coordinate } from "react-native-maps";
const App = () => {
let [wonder, setWonder] = useState<WorldWonder>(worldWonders[0]);

const showRandomWonder = () => {
let randomIndex = Math.floor(Math.random() * worldWonders.length);
setWonder(worldWonders[randomIndex]);
};
return (
<View style={{ flex: 1 }}>
<MapView
style={{ flex: 1 }}
region={{
latitude: wonder.latitude,
longitude: wonder.longitude,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
}}
>
{worldWonders.map((wonder) => (
<MapView.Marker
key={wonder.name}
coordinate={{
latitude: wonder.latitude,
longitude: wonder.longitude,
}}
title={wonder.name}
/>
))}
</MapView>
<Button title="Set random location" onPress={showRandomWonder} />
</View>
);
};

export default App;

Meer informatie

Voor meer informatie over react-native-maps kan je de documentatie raadplegen.