Files
hipmi-mobile/components/Map/MapCustom.tsx
Bagasbanuna02 f750d158be Integrasi Map Business
Add:
 components/Map/MapSelected.tsx
        components/_ShareComponent/GridTwoView.tsx
        service/api-client/api-maps.ts
utils/openInDeviceMaps.ts

Fix:
 modified:   app/(application)/(user)/maps/[id]/edit.tsx
        modified:   app/(application)/(user)/maps/create.tsx
        modified:   app/(application)/(user)/maps/index.tsx
        modified:   app/(application)/(user)/portofolio/[id]/index.tsx
        modified:   components/Map/MapCustom.tsx
        modified:   screens/Portofolio/BusinessLocationSection.tsx
        modified:   screens/Portofolio/DataPortofolio.tsx
        modified:   screens/Portofolio/ListPage.tsx

### No issue
2025-10-13 17:46:47 +08:00

83 lines
1.8 KiB
TypeScript

// components/MapComponent.js
import API_IMAGE from "@/constants/api-storage";
import { Image } from "expo-image";
import React from "react";
import { DimensionValue, StyleSheet, View } from "react-native";
import MapView, { Marker } from "react-native-maps";
interface MapComponentProps {
latitude?: number;
longitude?: number;
latitudeDelta?: number;
longitudeDelta?: number;
height?: DimensionValue;
namePin?: string;
imageId?: string;
onPress?: () => void;
}
const MapCustom = ({
latitude = -8.737109,
longitude = 115.1756897,
latitudeDelta = 0.1,
longitudeDelta = 0.1,
height = 300,
namePin = "Bali",
imageId,
onPress,
}: MapComponentProps) => {
const initialRegion = {
latitude,
longitude, // Jakarta sebagai default lokasi
latitudeDelta,
longitudeDelta,
};
return (
<View style={styles.container}>
<MapView
style={[styles.map, { height }]}
initialRegion={initialRegion}
showsUserLocation={true}
loadingEnabled={true}
>
{/* Contoh marker */}
<Marker
coordinate={{
latitude,
longitude,
}}
title={namePin}
onPress={onPress}
// Gunakan gambar kustom jika tersedia
>
<View style={{}}>
<Image
source={{ uri: API_IMAGE.GET({ fileId: imageId as string }) }}
style={{
width: 30,
height: 30,
borderRadius: 100,
borderWidth: 1,
}}
/>
</View>
</Marker>
</MapView>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
borderRadius: 8,
},
map: {
width: "100%",
},
});
export default MapCustom;