【Leaflet入門】レスポンシブな世界地図を作成する(PC・スマホ対応)

Leaflet-Responsive

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、Leafletでレスポンシブな世界地図を作成する方法(PC・スマホ対応)について解説していきます。

レスポンシブな世界地図を作成する(PC・スマホ対応)

Leafletでレスポンシブな世界地図を作成していきましょう。

メディアクエリで、画面サイズごとにMapの表示サイズを変えていきます。

SampleCodeは次のとおりです。

<html style="height: 100%; margin: 0;">
<head>
    <title>Leaflet</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="./node_modules/leaflet/dist/leaflet.css" />
    <script src="./node_modules/leaflet/dist/leaflet.js"></script>

    
<style>
    /* PC-Tablet-Size */
    @media (768px <= width ) {
        .robotama-world-map {
            height: 500px;
            width: 70%;
            margin: 0px auto;
        }
    }
    /* スマホ-Size */
    @media (width <= 767px) {
        .robotama-world-map {
            height: 350px;
            width: 80%;
            margin: 0px auto;
        }
    }
    </style>
</head>

<body style="height: 100%; margin: 0; overflow: hidden;">
    <h1 style="text-align: center;">Robotama-World-Map</h1>
    <div id="map" class="robotama-world-map"></div>
</body>

<script>

    // 1. map-Instance => L(Leaflet) の map-Func => setView-Func([緯度, 経度], ZoomLevel)
    const map = L.map('map',{
        doubleClickZoom: false,
        scrollWheelZoom:false,
        boxZoom:false,
        tap:false,
        keyboard:false,
        zoomControl:false,
        closePopupOnClick: false,

        worldCopyJump: true, // 世界地図を移動してもMarkerが自動生成される
    })
    .setView([51.5, -0.09], 3); // イギリスを中心地に設定する


    // 2. 地図データの読み込み Ver. 国土地理院 English
    L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/english/{z}/{x}/{y}.png', //  'Web配信されている地図の URL ', => OpenStreetMap や 国土地理院 などの Map-Dataを選択することができる。
    {
        attribution: 'Map data <a href="https://maps.gsi.go.jp/development/ichiran.html" target="_blank">国土地理院</a>', // attribution: '属性表示',
        minZoom:2,
        maxZoom: 6,    // maxZoom: 最大拡大縮尺レベル,
    }).addTo(map);

    // marker() で指定-Point に Markerを追加する => .addTo()は、 L.tileLayer()で読み込んだ地図をWebGISオブジェクトに追加する関数
    L.marker([51.5, -0.09]).addTo(map).bindPopup('ロボ玉万歳!!!.<br> 神聖グンマー帝国、万歳!!.');

    L.marker([38.9, -77.01]).addTo(map).bindPopup('アメリカ合衆国-Robotama');

    L.marker([38.9, 35.2]).addTo(map).bindPopup('イスラエル国-Robotama') //.openPopup();

    L.marker([41.89, 12.48]).addTo(map).bindPopup('イタリア共和国-Robotama'); // .openPopup();

    L.marker([52.5, 13.4]).addTo(map).bindPopup('ドイツ連邦共和国-Robotama'); // .openPopup();

    // openPopup() をすると、Clickしなくても Popupが出現した状態(Open-状態)になる! => 1つだけ
    L.marker([35.68, 139.69]).addTo(map).bindPopup('日本-Robotama').openPopup();

    L.marker([-41.289, 174.7]).addTo(map).bindPopup('ニュージーランド-Robotama');


</script>
</html>

レスポンシブな世界地図のPC表示

レスポンシブな世界地図のPC表示は、画面で確認すると次のようなサイズ感です。

レスポンシブな世界地図のスマホ表示

レスポンシブな世界地図のスマホ表示は、画面で確認すると次のようなサイズ感です。

高さや幅をスマホサイズに合わせて、最適化しました。

JavaScript書籍 Ver. 中級-上級者向け

JavaScript書籍 Ver. 初級者向け

プログラミング学習・エンジニア転職関連の情報

自宅で現役エンジニアから学べる『TechAcademy』 (エンジニア転職保証)

『GEEK JOBキャンプ』スピード転職コース(無料)

【IT道場】入校時0円! 就職目的プログラミングスクール

エンジニア転職なら100%「自社開発」求人に強い【クラウドリンク】

『techgym』 (Python特化・無料)

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

最近の投稿