何かやってみるブログ

興味をもったことに関して書いています。技術系の記事が多いです。

Leafletを試してみた

お仕事で地図のJSライブラリについて調べる機会があったので、メモ代わりに残します.

Leafletとは

地図を表示させたり、マッピングすることが出来る便利なJSライブラリです.

leafletjs.com

とりあえず地図を表示させてみる

headタグにCSSライブラリとJSライブラリを読み込む

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>地図サンプル</title>
    <link
      rel="stylesheet"
      href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
      integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
      crossorigin=""
    />
    <!-- Make sure you put this AFTER Leaflet's CSS -->
    <script
      src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"
      integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="
      crossorigin=""
    ></script>
  </head>
  <body></body>
</html>

地図の中心部分とタイルを指定する

<body>
    <div id="map"></div>
  </body>
  <script>
    var map = L.map("map");
    map.setView([35.710063, 139.8107], 15);

    L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png").addTo(
      map
    );
  </script>

mapという変数に入れて、setViewというメソッド(第一引数は緯度経度の配列、第二引数にズーム具合)を使って地図の中心部分を指定しています. tileLayerというメソッドで地図のタイルの指定をしています.

Documentation - Leaflet - a JavaScript library for interactive maps

Documentation - Leaflet - a JavaScript library for interactive maps

タイルにもいろいろあり、様々な種類の地図が表示出来るようになっています.

qiita.com

ブラウザで確認してみると地図が表示されます. 緯度経度に東京スカイツリーを指定したので、中心地点に東京スカイツリーが確認できました.

f:id:s-takaya1027:20200604120422p:plain

ピンを立ててみる

Goole Mapとかでよくみる地図上のピンも実装できます.

makerというメソッド(引数に緯度経度の配列)を使って、緯度経度を指定してあげます.

L.marker([35.710063, 139.8107]).addTo(map);

Documentation - Leaflet - a JavaScript library for interactive maps

ブラウザで確認してみると東京スカイツリーにピンがたっています.

f:id:s-takaya1027:20200604121127p:plain

まとめ

APIキーを取得したり、お金をかけずに簡単に地図を表示できて感動しました.便利な機能が他にもたくさんありそうなので、興味のある方は触ってみてください.