123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import React, { useRef } from 'react';
- import { View, TouchableOpacity, StyleSheet } from 'react-native';
- import * as MapLibreRN from '@maplibre/maplibre-react-native';
- import { useNavigation } from '@react-navigation/native';
- import { Colors } from 'src/theme';
- import { VECTOR_MAP_HOST } from 'src/constants';
- import { NAVIGATION_PAGES } from 'src/types';
- const MessageLocation = ({
- props,
- lat,
- lng,
- onLongPress
- }: {
- props: any;
- lat: number;
- lng: number;
- onLongPress: (currentMessage: any, props: any) => void;
- }) => {
- const navigation = useNavigation();
- const mapRef = useRef<MapLibreRN.MapViewRef>(null);
- const cameraRef = useRef<MapLibreRN.CameraRef>(null);
- return (
- <TouchableOpacity
- style={styles.container}
- onPress={() =>
- navigation.navigate(...([NAVIGATION_PAGES.FULL_MAP_VIEW, { lat, lng }] as never))
- }
- onLongPress={() => onLongPress(props.currentMessage, props)}
- >
- <MapLibreRN.MapView
- ref={mapRef}
- style={styles.map}
- mapStyle={VECTOR_MAP_HOST + '/nomadmania-maps.json'}
- rotateEnabled={false}
- attributionEnabled={false}
- scrollEnabled={false}
- zoomEnabled={false}
- pitchEnabled={false}
- >
- <MapLibreRN.Camera
- ref={cameraRef}
- defaultSettings={{ centerCoordinate: [lng, lat], zoomLevel: 10 }}
- />
- <MapLibreRN.MarkerView coordinate={[lng, lat]}>
- <View
- style={{
- width: 20,
- height: 20,
- borderRadius: 10,
- backgroundColor: Colors.ORANGE,
- borderWidth: 2,
- borderColor: Colors.WHITE
- }}
- />
- </MapLibreRN.MarkerView>
- </MapLibreRN.MapView>
- </TouchableOpacity>
- );
- };
- const styles = StyleSheet.create({
- container: {
- width: '100%',
- height: 150,
- borderRadius: 10,
- overflow: 'hidden'
- },
- map: {
- flex: 1
- }
- });
- export default MessageLocation;
|