ハウツー ドラッグできるマーカーで座標を取得するには

マーカーをドラッグで動かし、離した位置の緯度と経度を受け取ります。地点を登録、編集する画面で、ユーザーにピンを置いてもらう用途に使えます。

コード

embed 単体ではドラッグできるマーカーは作れません。上のタブで suite / react のコードに切り替えてください。

結果

上のコードは、それぞれのタブの下でそのまま動いています。マーカーをドラッグして離すと、その位置の緯度と経度が取得できます(suite の例はコンソールに出力、react の例は地図の上に表示します)。取得した座標は、フォームの入力欄に書き戻したり、サーバーへ送信したりして使います。

うまくいかないとき
  • ドラッグできない → draggable(suite は new maplibregl.Marker({ draggable: true }))を付け忘れていないか確認します。
  • 座標が [経度, 緯度] で混乱する → getLngLat(){ lng, lat } のオブジェクトを返します。配列に直すときは [経度, 緯度] の順です。
  • ドラッグ中は座標が更新されない → dragendonDragEnd)は離したときだけ呼ばれます。移動中も追いたいときは dragonDrag)を使います。