URL欄に地図の位置情報を反映(Leaflet)

プログラムの概要とデモ(自作プラグインを利用)

 Leafletで作成したURL欄に地図の位置情報を反映するプログラムです。 ブックマークに登録したり、URLをコピー&ペーストした場合に、表示中の緯度、経度、ズームレベルを保持することができます。
 URL欄には、下記の形式で地図の位置情報が表示されます。 地図の表示画面は、地図の中央に十字カーソルを表示と同じです。

http://ドメイン名/パス名/ファイル名?パラメータ@緯度,経度,ズームレベル

ソースの説明

HTMLの<head>タグのソース

 leaflet_urlプラグインを利用する場合、HTMLの<head>タグに、LeafletのJavaScriptのソースファイルを参照するための指定を行う必要があります。 プラグインは、上記リンクからダウンロードできます。 プラグインは、Leafletを拡張していますので、必ず、Leafletの後に指定する必要があります。

<link rel="stylesheet" href="js/leaflet.css" /> <link rel="stylesheet" href="js/leaflet_url.css" /> <script src="js/leaflet.js"></script> <script src="js/leaflet_url.js"></script>

HTML、CSSのソース

 HTML、CSSのソースは、地図の中央に十字カーソルを表示と同じです。
 URL欄に地図の位置情報を反映するためには、十字カーソルは不要ですが、画面の中央が分かりやすいように、十字カーソルの表示も行っています。

JavaScriptのプログラムのソース

 プログラムの初期処理の中で、UrlHandlerクラスを呼び出すだけです。 これだけで、地図を移動すると、URL欄の書き換えが行われます。 URLに緯度、経度、ズームレベル情報が含まれている場合は、その値が返却されますので、setViewメソッドで、その位置を設定してください。
 leaflet_urlプラグインには、CSSの十字カーソルのCSSファイルも入っています。 このファイルを指定すると、CSSの十字カーソルの設定は不要となります。

let url = L.urlHandler(map); // リンク書換機能の追加 if (typeof url._zoom != 'undefined') { // 位置情報付URL map.setView([url._lat, url._lng], url._zoom); }

leaflet_urlプラグインについて

処理概要

 leaflet_urlプラグインは、Handlerクラスを拡張して作成しました。 Handlerクラスは、Leafletのイベント制御を行っているクラスですので、moveendイベントを取得して、URLの書き換え処理を行っています。 さらに、初期処理では、URLの解析を行い、_lat,_lng,_zoomプロパティに設定しています。

著作権について

 leaflet_urlプラグインは、無料で利用することができます。 ただ、著作権は放棄していませんので、著作権表示は残しておいて下さい。 このソフトの利用は、無サポート無保証となります。 もし、サポートが必要な場合は、仕事としてお受けすることは可能ですので、ASH有限会社までご相談ください。

Leafletのプラグイン登録について

 leaflet_urlプラグインは、Leafletのプラグインの作成方法を見て作成していますので、Leafletのオフィシャルサイトのプラグインとして登録することも可能だと思っています。ただ、Leafletの作者は、ウクライナのキエフに住んでいましたので、プラグインの申請は見合わせています。


Copyright (C) ASH Joe Masumura