Kurs React Native · Moduł 8: Lokalizacja i mapy
react-native-maps - Mapy
W tej lekcji4
Wyświetlaj interaktywne mapy w aplikacji!
Instalacja
npx expo install react-native-mapsPodstawowa mapa
import MapView, { Marker, PROVIDER_GOOGLE } from 'react-native-maps';
function AtlantisMap() {
const initialRegion = {
latitude: 37.78825,
longitude: -122.4324,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
};
return (
<MapView
style={{ flex: 1 }}
provider={PROVIDER_GOOGLE}
initialRegion={initialRegion}
showsUserLocation
showsMyLocationButton
>
<Marker
coordinate={{ latitude: 37.78825, longitude: -122.4324 }}
title="Pałac Posejdona"
description="Siedziba władcy mórz"
/>
</MapView>
);
}Markery i callout
import { Marker, Callout } from 'react-native-maps';
const locations = [
{ id: '1', lat: 37.78, lng: -122.43, title: 'Świątynia Neptuna' },
{ id: '2', lat: 37.79, lng: -122.42, title: 'Arena Trytonów' },
];
function MarkersMap() {
return (
<MapView style={{ flex: 1 }}>
{locations.map((loc) => (
<Marker
key={loc.id}
coordinate={{ latitude: loc.lat, longitude: loc.lng }}
>
<Callout>
<View style={styles.callout}>
<Text style={styles.calloutTitle}>{loc.title}</Text>
<Pressable onPress={() => navigateTo(loc.id)}>
<Text>Szczegóły</Text>
</Pressable>
</View>
</Callout>
</Marker>
))}
</MapView>
);
}Polyline i Polygon
import { Polyline, Polygon } from 'react-native-maps';
// Trasa
<Polyline
coordinates={[
{ latitude: 37.78, longitude: -122.43 },
{ latitude: 37.79, longitude: -122.42 },
{ latitude: 37.80, longitude: -122.41 },
]}
strokeColor="#1a5276"
strokeWidth={3}
/>
// Obszar
<Polygon
coordinates={[...]}
fillColor="rgba(26, 82, 118, 0.3)"
strokeColor="#1a5276"
/>Kod do tej lekcji: App.tsx
import React from 'react';
import { StyleSheet } from 'react-native';
import MapView, { Marker } from 'react-native-maps';
const locations = [
{ id: '1', latitude: 37.785, longitude: -122.432, title: 'Świątynia Posejdona' },
{ id: '2', latitude: 37.790, longitude: -122.425, title: 'Arena Trytonów' },
{ id: '3', latitude: 37.788, longitude: -122.420, title: 'Targ Pereł' },
];
export default function App() {
return (
<MapView
style={styles.map}
// TODO: dodaj prop showsUserLocation, aby pokazać pozycję gracza
initialRegion={{
latitude: 37.788,
longitude: -122.426,
// TODO: uzupełnij latitudeDelta i longitudeDelta (np. 0.02), aby ustawić zoom
}}
>
{/* TODO: przejdź przez tablicę locations metodą .map() i zwróć <Marker> dla każdej lokacji */}
{/* Każdy Marker potrzebuje: key={loc.id}, coordinate={{ latitude, longitude }} oraz title={loc.title} */}
</MapView>
);
}
const styles = StyleSheet.create({
map: {
flex: 1,
},
});Hasła z dokumentacji w tej lekcji
Widzisz błąd w tej lekcji?
Sprawdź się
Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.
1. Jak zainstalować react-native-maps?
2. Który prop MapView pokazuje lokalizację użytkownika?
To 2 z 9 pytań do tej lekcji. Pozostałe rozwiążesz w grze.
Zadania praktyczne w grze
- Układanie w pionie
Uporządkuj definicję regionu mapy:
- Klikanie w kolejności
Kliknij elementy Marker:
- Edytor kodu
Uzupełnij kod MapView z Marker.
- Układanie w poziomie
Ułóż props Polyline: