地図上に図形やマーカーを描画できる Leaflet.Draw で、マーカーのアイコンを任意の画像に変更する方法についてです。
GitHub にサンプルコードが掲載されていたので、ほぼそのままコピー&ペーストしたら動作しました。
Leaflet.Draw の GitHub ページはこちらから。
GitHub – Leaflet/Leaflet.draw: Vector drawing and editing plugin for Leaflet
https://github.com/Leaflet/Leaflet.draw
サンプルコードは下記のとおりです。
const map = L.map('map', {
center: [34.797345395117546, 137.5804696201213],
zoom: 13,
drawControl: false,
});
const tiles = L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
attribution: "<a href='https://maps.gsi.go.jp/development/ichiran.html' target='_blank'>地理院タイル</a>"
}).addTo(map);
// 図形描画ボタンをマップに追加
let drawnItems = new L.FeatureGroup();
map.addLayer(drawnItems);
// マーカー
const customMarker = L.Icon.extend({
options: {
shadowUrl: null,
iconAnchor: new L.Point(15, 15),
iconSize: new L.Point(30, 30),
iconUrl: '[アイコン画像のURL]',
}
});
let drawControl = new L.Control.Draw({
draw: {
marker: {
icon: new customMarker(),
},
},
edit: {
featureGroup: drawnItems
}
});
map.addControl(drawControl);
map.on(L.Draw.Event.CREATED, function (e) {
editableLayers.addLayer(e.layer);
});
今回重要なのは、15~22 行目と、26~28 行目です。
15~22 行目でカスタムアイコンを設定し、それを 26~28 行目で地図に反映しています。
上記を追加して実行したところ、マーカーのアイコンが設定した画像に置き換わっていました!
なお、今回はアイコン画像の関係上、マーカーの中央にアンカーが来るように設定していますが、こちらは画像の見た目によって変更してください。
アイコン画像のサイズについても、適宜調整してください。
以上、Leaflet.Draw でマーカーのアイコンを任意の画像に変更する方法についてでした。
ご参考になれば幸いです。