React Leaflet は、React.js フレームワークと Leaflet ライブラリを組み合わせた地図コンポーネントの作成を容易にするためのライブラリです。この記事では、React Leaflet を使用して、GeoJSON 形式のデータを地図上に表示する方法を確認します。
パッケージのインストールとフォルダ構成
アプリを作成します。
npx create-react-app
パッケージをインストールします、leaflet と react-leaflet と axios を使用します。
npm install leaflet react-leaflet axios
ファイル構成
|-- public//
| `-- shizuoka.geojson
`-- src //
|-- index.js
|-- index.css
|-- App.css
`-- App.js
React Leaflet マップ表示とレイヤーコントロール
2023年06月06日
leafletGeoJSON データを地図上に表示する
国土交通省のこちらからgeoJsonデータをダウンロードしました。
import { MapContainer, TileLayer, GeoJSON } from "react-leaflet";
import "leaflet/dist/leaflet.css";
import "./App.css";
import { useEffect, useState } from "react";
import axios from "axios";
const center = [35.3628, 138.7307];
function App() {
const [data, setData] = useState("");
useEffect(() => {
const load = async () => {
let shizuoka = await axios.get("./shizuoka.geojson");
if (shizuoka) setData(shizuoka.data);
};
load();
}, []);
return (
<MapContainer center={center} zoom={5} zoomControl={false} id="map">
<TileLayer
attribution='© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
/>
{data && <GeoJSON data={data} />}
</MapContainer>
);
}
export default App;
9 ~ 16: axios を使って geojson ファイルを読み込んで、useState に値を入れています。
1, 24: GeoJSON コンポーネントに取得したデータを渡すと、geojson 形式のデータを地図上に表示させることができます。