Leaflet es una biblioteca JavaScript líder de código abierto para mapas interactivos aptos para dispositivos móviles. Integrarlo con React.js para mostrar un mapa con múltiples marcadores utilizando datos GEOJson es una combinación poderosa para aplicaciones de mapeo web.
¿Qué es GeoJSON?
GeoJSON es un formato para codificar estructuras de datos geográficos utilizando la notación de objetos JavaScript (JSON). Se usa comúnmente para representar características geográficas como puntos, líneas, polígonos y colecciones de estos objetos.
Algunos casos de uso de GeoJSON incluyen:
- Almacenamiento e intercambiar datos geográficos en un formato estandarizado.
- Mostrando y visualizante datos geográficos en mapas.
- Realización de tareas de análisis espacial y geoprocesamiento.
Las características clave de GeoJSON incluyen:
- Soporte para diferentes tipos de geometría, como Punto, cadena de línea, Polígono, Multipunto, cadena multilíneay Multipolígono.
- Capacidad para representar colecciones de funciones, que pueden contener varias funciones.
- Soporte para propiedades para asociar atributos adicionales con características geográficas.
- Flexibilidad en la representación de geometrías tanto simples como complejas.
GeoJSON proporciona un formato interoperable y ampliamente adoptado para trabajar con datos geográficos en diversas aplicaciones y plataformas.
Este tutorial
Este tutorial le guiará a través de la configuración Folleto con React.js y agregando un feed GEOJson para mostrar múltiples marcadores.
Requisitos previos
- Básico conocimiento de reaccionar.js
- Nodo.js y MNP instalado
Configurando su proyecto React
Primero, cree una nueva aplicación React si aún no lo ha hecho:
npx create-react-app leaflet-react-demo
cd leaflet-react-demo
Instalación de dependencias
Necesitas instalar leaflet
y react-leaflet
que es un contenedor de React para Leaflet:
npm install leaflet react-leaflet
Además, instale leaflet-defaulticon-compatibility
para solucionar un problema con la ruta predeterminada del icono de marcador en Leaflet cuando se usa con Webpack:
npm install leaflet-defaulticon-compatibility
Configurar el componente del mapa
Crea un nuevo componente para tu mapa. llamémoslo MapView.js
. Primero, es necesario importar módulos y configurar el CSS de Leaflet:
import React from 'react';
import { MapContainer, TileLayer, GeoJSON } from 'react-leaflet';
import 'leaflet/dist/leaflet.css';
import 'leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.css';
import L from 'leaflet';
import 'leaflet-defaulticon-compatibility';
const MapView = ({ geojsonData }) => {
return (
<MapContainer center={[51.505, -0.09]} zoom={13} style={{ height: "100vh" }}>
<TileLayer
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
/>
<GeoJSON data={geojsonData} />
</MapContainer>
);
};
export default MapView;
En este componente:
MapContainer
es el contenedor del mapa.TileLayer
es la capa para los mosaicos del mapa, usando OpenStreetMap en este ejemplo.GeoJSON
se utilizará para representar el feed GEOJson.
Agregar datos GEOJson
Para esto tutorialusaremos un simple GEOJson objeto. En un escenario del mundo real, estos datos podrían provenir de un API o un archivo estático:
// Add this inside your MapView.js or import it from an external file
const geojsonData = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": { "name": "Location 1" },
"geometry": {
"type": "Point",
"coordinates": [-0.09, 51.505]
}
},
// ... more features
]
};
Pasa estos datos al MapView
componente.
Integración del componente MapView en su aplicación
Ahora integra el MapView
componente en su aplicación principal. En App.js
importar y usar MapView
:
import React from 'react';
import './App.css';
import MapView from './MapView'; // adjust the path as necessary
function App() {
return (
<div className="App">
<MapView />
</div>
);
}
export default App;
Personalización de la apariencia del marcador (opcional)
Para personalizar la apariencia de los marcadores o agregar ventanas emergentes, puede modificar el GeoJSON
componente. Por ejemplo, puede definir un pointToLayer
Función para personalizar marcadores:
<GeoJSON
data={geojsonData}
pointToLayer={(feature, latlng) => {
return L.marker(latlng, { /* options */ });
}}
/>
O usar onEachFeature
para agregar ventanas emergentes:
<GeoJSON
data={geojsonData}
onEachFeature={(feature, layer) => {
if (feature.properties && feature.properties.name) {
layer.bindPopup(feature.properties.name);
}
}}
/>
Conclusión
Ahora configuró Leaflet con React.js y agregó un feed GEOJson para mostrar múltiples marcadores. Esta configuración le permite integrar mapas interactivos en sus aplicaciones React de manera efectiva.
Puede explorar más a fondo las amplias funciones de Leaflet para agregar más funcionalidades, como íconos de marcadores personalizados, manejo de eventos y más.