【Leaflet】Font Awesome でマーカーを描画する

はじめに

 CSS を使ったアイコンの中でも、Font Awesome というウェブフォントは、数千個ものアイコンが登録してあり、特に有名なウェブフォントになります。今回はそんな Font Awesome を使って、 Leaflet のアイコンを描画する方法についてまとめたいと思います。

DrawTrail

図1. Font Awesome を使ったマーカー

 なお、この記事は「【Leaflet】 CSS でマーカーを描画する」の続きです。

Font Awesome を使ったマーカー

 Font Awesome を使ってマーカーを描画するには、プラグイン「Awesome-Markers」を使う方法も有りますが、単純に divIcon を使って描画することもできます。

L.marker([緯度, 経度], {
    icon: L.divIcon({
        /*Font Awesomeの埋め込みコード*/
        html:'<i class="fas fa-plane-departure fa-2x"></i>', 
        /*アイコンの色と位置を設定するためのCSS*/
        className:'color_palette solid_icon', 
        iconSize: [0, 0]}),
    }).addTo(map);

 html の部分に Font Awesome の埋め込みコードを記述しており、また2つのクラス color_palette と solid_icon を使って、マーカーの色と位置を設定できるように、CSS を定義しておきます。

.color_palette{
    background-color:#333333;
    color:#333333;
    border-color:#333333;
}
.solid_icon{
    position:absolute;
    background-color:none;
    color:none;
}
.solid_icon > i{
    position:absolute;
    top:-0.5em;
    left:-0.5em;
}

 サイト内では Font Awesome を使えるように、あらかじめダウンロードをしておきます。
「Font Awesomeの使い方が初心者でもわかる!ダウンロードから設定方法まで」

実装例

 全体のソースコードと実装例は次のようになります。

<!DOCTYPE html>
<html>
<head>
<title>htmlMap</title>
<meta http-equiv='content-type' charset='utf-8'>
<meta name='viewport' content='width=device-width'>
<style>
.color_palette{
    background-color:#333333;
    color:#333333;
    border-color:#333333;
}
.solid_icon{
    position:absolute;
    background-color:none;
    color:none;
}
.solid_icon > i{
    position:absolute;
    top:-0.5em;
    left:-0.5em;
}
</style>
</head>
<body>
<!-- 埋め込みマップのdivタグ。マップサイズはwidth(幅)とheight(高さ)で決まる -->
<div id='mapcontainer' style='width:100%; height:300px; z-index:0;'></div>

<!-- 以下LeafletのJavaScriptとCSS -->
<link rel='stylesheet' href='https://unpkg.com/leaflet@1.3.0/dist/leaflet.css' />
<script src='https://unpkg.com/leaflet@1.3.0/dist/leaflet.js'></script>
<!-- ダウンロードしたFont Awesomeへのファイルパス -->
<link href="css/font-awesome.min.css" rel="stylesheet">

<script>
function init_map() {

    var map = L.map('mapcontainer');
    map.setView([39.198, 138.603], 3); //初期の中心位置とズームレベルを設定

    //マップタイルを読み込み、引用元を記載する
    L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 
        {attribution: "<a href='http://osm.org/copyright'> ©OpenStreetMap </a>"}).addTo(map);
    
    //マーカーの配置
  L.marker([35.301, 136.138], {
        icon: L.divIcon({
            /*Font Awesomeの埋め込みコード*/
            html:'<i class="fas fa-plane-departure fa-2x"></i>', 
            /*アイコンの色と位置を設定するためのCSS*/
            className:'color_palette solid_icon', 
            iconSize: [0, 0]}),
        }).addTo(map);
}
    //ダウンロード時に初期化する
    window.addEventListener('DOMContentLoaded', init_map());

</script>
</body>
</html>

 実装例

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です