Closed18
「Amplify Geo で React アプリに地図を表示してみよう」をなぞる
これ
大方チュートリアル通りに現在もできるが、1点だけ変えないとエラーになる。
import { useEffect } from 'react';
import { createMap } from "maplibre-gl-js-amplify";
// 以下だけ変える必要がある。Amplify -> {Amplify}
import { Amplify } from 'aws-amplify';
import awsconfig from './aws-exports';
import "maplibre-gl/dist/maplibre-gl.css";
// Amplify の設定を読み込み
Amplify.configure(awsconfig);
function App() {
useEffect(() => {
createMap({
container: "map", // An HTML Element or HTML element ID to render the map in https://maplibre.org/maplibre-gl-js-docs/api/map/
center: [139.7674681227469, 35.68111419325676], // 東京駅
zoom: 14,
})
}, []);
return (
<div id="map" style={{height: '100vh'}}/>
);
}
export default App;
チュートリアル通りだと地図を変える方法が無かったり、シンプルすぎるのでもう少しやってみる。
この辺を参考にする
Amplify geoのチュートリアルでnpmを使ってるので、そのままnpmで。
このスターターは使用しません。
ライブラリのインストールがありますが、ここで@maplibre/maplibre-gl-leaflet
をインストールしようとするとエラーに。どうやらmaplibre-glのバージョンを上げろと怒られる。
npm install aws-amplify
npm install maplibre-gl-js-amplify
npm install maplibre-gl@
npm install @maplibre/maplibre-gl-leaflet
2.4.0を入れろと言われるので、言われるがままバージョンアップ。
npm i maplibre-gl@2.4.0
installできました。
"dependencies": {
"@geoblocks/ol-maplibre-layer": "^0.1.1",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"aws-amplify": "^5.3.5",
"maplibre-gl": "^2.4.0",
"maplibre-gl-js-amplify": "^3.1.0",
}
別のマップも表示してみる
どうやらamplify-geoを一回消してから、またinstallして設定する必要がありそう。
元
after
検索窓をつけて検索できるようにしてみる
以下の @aws-amplify/ui-react
ライブラリがあるので、その中でgeoのものを使ってみる。
npm i @aws-amplify/ui-react-geo
App.js
import { useState } from 'react';
import { Amplify } from 'aws-amplify'
import { MapView, LocationSearch } from '@aws-amplify/ui-react-geo';
import awsconfig from './aws-exports';
import '@aws-amplify/ui-react-geo/styles.css';
import 'maplibre-gl/dist/maplibre-gl.css'
import '@maplibre/maplibre-gl-geocoder/dist/maplibre-gl-geocoder.css'
import 'maplibre-gl-js-amplify/dist/public/amplify-geocoder.css'
// setting Amplify
Amplify.configure(awsconfig);
function App() {
const [{ latitude, longitude }] = useState({
latitude: 40,
longitude: -100,
});
return (
<div>
<MapView
initialViewState={{
latitude: 37.8,
longitude: -122.4,
zoom: 14,
}}
>
<LocationSearch />
</MapView>
</div>
);
}
export default App;
動きデモ
ここまでのコード(コミット)
参考記事
Amplifyでホスティングもしてみる。
何かがうまくいってないな
amplifyビルド遅いな。。。
そのままAmplifyでホスティングしようとすると、yやらvやらがnot definedになる。
これはbrowerslistを変えると直る。
開発環境じゃなくても動いた
このスクラップは2023/07/23にクローズされました