rn-map-carousel
v0.2.3
Published
map library
Readme
rn-map-carousel
Una librería de React Native para mostrar e interactuar con mapas ,marcadores y un carrousel.
Instalación
Usando npm
npm install rn-map-carouselUsando yarn
yarn add rn-map-carouselConfiguración de Google Maps
Android
Agrega tu clave de API de Google Maps en tu archivo AndroidManifest.xml:
<application
android:networkSecurityConfig="@xml/network_security_config"
android:usesCleartextTraffic="true">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="TU_CLAVE_DE_API_DE_GOOGLE_MAPS" />
...
</application>Actualizar gradle-wrapper.properties
Asegúrate de que tu archivo gradle-wrapper.properties contenga la siguiente configuración:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zipiOS
Agrega tu clave de API de Google Maps en tu archivo AppDelegate:
#import <GoogleMaps/GoogleMaps.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GMSServices provideAPIKey:@"TU_CLAVE_DE_API_DE_GOOGLE_MAPS"];
// ...
}
@endAsegúrate de que tu Podfile especifica un mínimo de iOS 13 (obviarlo si ya esta especificado en el proyecto):
platform :ios, '13.0'Si estás utilizando CocoaPods versión 1.15.0 o mayor
Añade la siguiente línea a tu Gemfile para usar la versión 1.14.0 de CocoaPods:
gem 'cocoapods', '1.14.0'Luego, instala la versión especificada de CocoaPods:
bundle installInstala las dependencias de CocoaPods:
cd ios
bundle exec pod installUso
Aquí tienes un ejemplo de cómo usar la biblioteca del mapa con un componente de carrusel (tambien tiene una carpeta de example con el uso):
interface Coordenadas {
latitud: number;
longitud: number;
}
interface Beneficio {
id:string;
titulo: string;
descripcion: string;
imagen: string;
promocion: string;
direccion: string;
coordenadas: Coordenadas;
}
export default function App() {
const [beneficios, setBeneficios] = useState<Beneficio[]>([]);
const [loading, setLoading] = useState<boolean>(true);
const [error, setError] = useState<string | null>(null);
const carouselRef = useRef<any>(null);
useEffect(() => {
const unregisterListener = registerMarkerSelectListener((event) => {
console.log('Marker seleccionado', event);
});
const fetchData = async () => {
try {
const responseData = await fetch('https://demo1012858.mockable.io/benefits');
if (!responseData.ok) {
throw new Error('Sucedio un error');
}
const response = await responseData.json();
setBeneficios(response.data);
for (const benefit of response.data) {
console.log('Agregando el beneficio', benefit)
addMarker(benefit)
}
} catch (error) {
setError((error as {message:string}).message);
} finally {
setLoading(false);
}
};
fetchData();
return () => {
unregisterListener();
}
}, []);
const addMarker = async(benefit:Beneficio) => {
try {
const res = await MapLibrary.addMarker(
benefit.coordenadas.latitud,
benefit.coordenadas.longitud,
benefit.titulo,
benefit.id);
} catch (error) {
console.error('RN Error:',error)
}
}
return (
<View style={styles.bg}>
<SafeAreaView style={styles.container}>
<MapView style={styles.map} />
<Carousel items={beneficios} />
</SafeAreaView>
</View>
);
}
const styles = StyleSheet.create({
bg:{
flex:1,
},
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
box: {
width: 60,
height: 60,
marginVertical: 20,
},
map: {
height:'100%',
width:'100%'
},
});Componentes
MapView
El componente MapView muestra el mapa y permite la interacción con él.
Propiedades
style (opcional): El estilo a aplicar a la vista del mapa.
Carousel
El componente Carousel muestra un carrusel horizontal de elementos.
Propiedades
items (requerido): Un array de elementos a mostrar en el carrusel. Cada elemento debe tener una propiedad titulo y imagen.
Licencia
MIT
