[[:programming_start]] ====== Leaflet 地図に文字列を表示する ====== Leaflet 1系を使用してマーカーアイコンのかわりに地図上にテキストを表示します。 注意:「Leaflet勉強のための試作プログラムなので間違っている可能性があります」「DokuWikiは個別にヘッダを編集できないので通常とは少し違う構造になっています」 ---- ===== デモ ===== マップ上にアイコンの替わりにテキストを表示できますが、次のような点から使い勝手はよくありません。 * ズームを変更しても文字の大きさは変化しないので。ズームを広域にすると東京都という文字で日本が隠れてしまいます。 * iconSizeを与えると表示領域が固定化され長い文字などは枠内に収まりません。 * 逆にiconSizeを与えないと千葉県のように縦書きになります。 * iconSizeを与えず横書きにするには、tableとスタイルシートにwhite-space: nowrapを使えば「埼玉県」のように可変長の文字に対応できますが、使用フォントなどによりブラウザごと長さが変わるのでアンカーを中央にする事ができません。 使えるシーンはズーム固定で、文字列が決まっていて短い場合などに限られそうです。
---- ===== ソースコード =====
---- ===== 説明 ===== 基本的な部分は[[leaflet:icon]]と同じで、アイコン(L.icon)に代わって文字(L.divIcon)を使い文字装飾用のスタイルシート(css)が追加されているだけです。 L.divIconで表示する文字と装飾用のClass名(=divicon1)をセットします。あとのiconSize・iconAnchor・popupAnchorはアイコンと同じです。iconSizeを指定した場合は文字列が長いかったり大きいと正しく表示できません。逆にiconSizeを指定しないと縦向きに表示されます。要注意です。個人的には埼玉県の例のようにtableでラップしてwhite-space:nowrapで自動改行を防ぐのが最良な気がしますがOSやブラウザによって文字列長が変わるためアンカーをセンターにできません。 var divIcon1 = L.divIcon({ html: '東京都 東京都
東京都 東京都', //表示する文字 html使用可能 className: 'divicon1', //装飾用のclass名 iconSize: [80,30], //表示エリアの大きさ(幅,高さ) iconAnchor: [40,15], //アンカー位置:0,0を指定するとアイコンの左上が地図座標と一致します popupAnchor: [0, -10] //ポップアップの表示位置:0,0を指定するとアンカ位置からポップアップ表示します });
アイコンのスタイルをセットします。 .divicon1{background:white; text-align: center; font-size: 12px;}