タイトルにある通り、今回は「react-leaflet-draw」ライブラリでマーカーの画像を変更する方法についてです。
以前投稿した「【JavaScript】Leaflet.Drawでマーカーのアイコン画像を変更する」と重複しますが、今回は「react-leaflet-draw」ライブラリを使っているので、書き方が若干異なります。
さて、早速サンプルコードです。
まずは必要なライブラリをインポートします。
import {MapContainer, TileLayer, FeatureGroup} from 'react-leaflet'
import {EditControl} from "react-leaflet-draw"
import 'leaflet/dist/leaflet.css';
import 'leaflet-draw/dist/leaflet.draw.css';
import L from 'leaflet';
const customMarker = new L.Icon({
shadowUrl: null,
iconAnchor: new L.Point(15, 15),
iconSize: new L.Point(30, 30),
iconUrl: '[画像のパス]',
});
5行目の import L from 'leaflet'; を使ってマーカー画像を変更します。
こちらをインポートした後、7~12行目のようにマーカーで使用したい画像とサイズを設定します。
私の環境では、バツマークの画像を使い、影の画像は使用せず、画像の中心をアンカーとしています。
なお、こちらの指定は使用する画像によって適宜変更してください。
マーカー画像を追加後は、下記のように指定して反映します。
<MapContainer
id='map'
center={this.state.latlng}>
<TileLayer
attribution='<a href="https://maps.gsi.go.jp/development/ichiran.html" target="_blank">地理院タイル</a>'
url="https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png"/>
<FeatureGroup>
<EditControl
position="topleft"
draw={{
marker: {
icon: customMarker,
}
}} />
</FeatureGroup>
</MapContainer>
実際にマーカー画像を反映しているのが 10~14行目です。
上記を追加後、地図を表示してみたところ、問題なくマーカー画像が変更できました!
以上、「react-leaflet-draw」ライブラリで地図に描画できるマーカーの画像を変更する方法についてでした。
ご参考になれば幸いです。