JavaScript

【OpenStreetMap】Leafletで複数のマーカを表示する方法

2020年8月30日

はじめに

OpenStreetMapとLeafletで地図にマーカーを複数を表示する方法を紹介します。

地図の表示イメージは以下の通りです。(東京タワー、東京スカイツリー、六本木ヒルズ にマーカーを表示しています)

Leafletで地図にマーカを複数表示する方法

スポンサーリンク

JavaScriptの実装例

<!DOCTYPE html>
<html>
  <head>
    <title>OpenStreetMapとLeafletで地図にマーカーを複数表示する</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
      integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
      crossorigin=""/>
    <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"
      integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="
      crossorigin=""></script>
  </head>
  <body>
    <div id="view_map" style="height: 500px;"></div>
    <script type="text/javascript">
        //緯度,経度,ズーム
        var map = L.map('view_map').setView([35.6809591, 139.7673068], 12);

        // OpenStreetMap から地図画像を読み込む
        L.tileLayer('https://{s}.tile.osm.org/{z}/{x}/{y}.png', {
            maxZoom: 18,
            attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, '
        }).addTo(map);
        
      var popup = L.popup();
      L.marker([35.658577, 139.745451]).addTo(map).on('click', function (e) {
            popup
              .setLatLng(e.latlng)
              .setContent("東京タワー")
              .openOn(map);
      });
      L.marker([35.6603835, 139.7292068]).addTo(map).on('click', function (e) {
            popup
              .setLatLng(e.latlng)
              .setContent("六本木ヒルズ")
              .openOn(map);
      });
      L.marker([35.7100069, 139.8108103]).addTo(map).on('click', function (e) {
            popup
              .setLatLng(e.latlng)
              .setContent("東京スカイツリー")
              .openOn(map);
      });
    </script>
  </body>
</html>

JavaScriptの解説

地図を表示する場所の指定

地図を表示する場所を指定しています。今回の例では「東京駅」の緯度・経度を指定しています。

var map = L.map('view_map').setView([35.6809591, 139.7673068], 12);

マーカーを表示する場所の指定

地図上にマーカーを表示する場所を指定します。今回の例では「東京タワー」「六本木ヒルズ」「東京スカイツリー」にマーカーを表示しています。

また、マーカーをクリックすると、ポップアップ表示するようにしています。

var popup = L.popup();
L.marker([35.658577, 139.745451]).addTo(map).on('click', function (e) {
    popup
      .setLatLng(e.latlng)
      .setContent("東京タワー")
      .openOn(map);
});
L.marker([35.6603835, 139.7292068]).addTo(map).on('click', function (e) {
    popup
      .setLatLng(e.latlng)
      .setContent("六本木ヒルズ")
      .openOn(map);
});
L.marker([35.7100069, 139.8108103]).addTo(map).on('click', function (e) {
    popup
      .setLatLng(e.latlng)
      .setContent("東京スカイツリー")
      .openOn(map);
});

終わりに

本記事では「OpenStreetMapとLeafletで地図にマーカーを複数を表示する方法」を紹介しました。

次回は「OpenStreetMapとLeafletでマーカーの色を変更する方法」を紹介します。

【関連記事】

helpful