Leaflet #09 【データのカテゴリーに応じたマーカー表示】

データのカテゴリー

ため池区分

 兵庫県の公表ため池CSVデータの区分(カテゴリー)を見ると、県の指定状況から、特定(農業用)ため池、防災重点農業用ため池及びこれら以外のため池に分類できる。さらに、兵庫県水防計画書には、要監視ため池の指定が掲載されている。

マーカー区分

 ため池の地図表示を以下のような区分とマーカーで試した。

         区分マーカー  コード中のファイル名
特定(農業用)ため池circle-greenlime10px.png
防災重点農業用ため池circle-purpleviolet10px.png
特定(農業用)ため池かつ防災重点農業用ため池circle-dredred10px.png
上記以外のため池circle-navyblue10px.png
要監視ため池square-red12px.png
マーカーの凡例表示

 HTMLの14~22行目を書き足し、地図の欄外下部に凡例を設ける。

<!DOCTYPE html>
<html lang="ja">
    <head>
        <title>Reservoir&Municipalities Map - Leaflet</title>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin=""/>
        <link rel="stylesheet" href="./style-practical-011.css"/>
        <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    </head>

    <body>
        <div id="map"></div>
        <div style="display:inline-block;margin:4px;font-size:12px;">
            <span>
                <img src="../picture/circle-dredred10px.png"> 特定(農業用)ため池&防災重点農業用ため池 
                <img src="../picture/circle-greenlime10px.png"> 特定(農業用)ため池 
                <img src="../picture/circle-purpleviolet10px.png"> 防災重点農業用ため池 
                <img src="../picture/circle-navyblue10px.png"> 左記以外のため池 
                <img src="../picture/square-red12px.png"> 要監視ため池 
            </span>
        </div>
        <script src="./index-practical-013.js"></script>
    </body>
</html>
ため池の区分とマーカーの照応

 ため池の区分に応じたマーカーを表示するため、JavaScriptの13~30行目を追加変更。
GeoJSONファイルの特定(農業用)ため池指定日、防災重点農業用ため池指定日、要監視ため池の各propertiesの記述の有無を判定条件とした。

let mymap = new L.map('map').setView([35, 135], 11);

//国土地理院地図
let gsiattr = "<a href='https://maps.gsi.go.jp/development/ichiran.html' target='_blank'>国土地理院</a>";
let gsi = L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', { minZoom:5, attribution: gsiattr });
gsi.addTo(mymap);  // 初期設定で地理院標準地図を表示

//ため池
$.getJSON("../geojson/nishiwaki_2138.geojson",function(data) {
    L.geoJSON(data, {
        style: function(feature) {return feature.properties;},
        pointToLayer:function (feature, cordinates) {
            let boujuu  = feature.properties.防災重点農業用ため池指定日;         //防災重点ため池指定日欄で指定判定
            let tokutei = feature.properties['特定(農業用)ため池指定日'];       //特定ため池指定日欄で指定判定
            let kanshi  = feature.properties.要監視;                           //要監視対象ため池の判定
            let iconopt;
            let iconBT  = L.icon({iconUrl:"../picture/circle-dredred10px.png"});
            let iconKBT = L.icon({iconUrl:"../picture/sqcir-red12px.png"});
            let iconBB  = L.icon({iconUrl:"../picture/circle-purpleviolet10px.png"});
            let iconKBB = L.icon({iconUrl:"../picture/sqcir-purple12px.png"});
            let iconTT  = L.icon({iconUrl:"../picture/circle-greenlime10px.png"});
            let iconNBT = L.icon({iconUrl:"../picture/circle-navyblue10px.png"});

            if ( boujuu == "" && tokutei == "") iconopt = iconNBT;                            //特定外ため池を青丸表示
                else if( boujuu == "" && tokutei != "") iconopt = iconTT;                     //特定ため池を緑丸表示
                else if( boujuu != "" && tokutei == "" && kanshi == "") iconopt = iconBB;     //防災重点ため池を紫丸表示
                else if( boujuu != "" && tokutei == "" && kanshi != "") iconopt = iconKBB;    //防災重点ため池+要監視を赤角紫丸表示
                else if( boujuu != "" && tokutei != "" && kanshi == "") iconopt = iconBT;     //防災重点ため池&特定ため池を赤丸表示
                else if( boujuu != "" && tokutei != "" && kanshi != "") iconopt = iconKBT;    //防災重点ため池&特定ため池+要監視を赤角赤丸表示
        let point = L.marker(cordinates,{icon:iconopt});
        let name = feature.properties.ため池名;      //ため池名
        point.bindPopup(name);
        return point;
        }
    }).addTo(mymap);
});
おすすめ
始めよう
Leaflet Quick Start を開くところから。 ベースマップは、OpenStreetMap。
おすすめ
ベースマップに国土地理院地図
ベースマップに国土地理院の標準地図、淡色地図、写真を加える。
おすすめ
ベースマップにGoogle Map
ベースマップにGoogle Mapの地図(Roadmap)、航空写真(Satellite)、航空写真+ラベル(Hybrid)、地形(Terrain)を加える。
おすすめ
市区町界ポリゴン(Polygon)を作成
GeoJSONファイルから市区町界ポリゴンを描く。
おすすめ
ため池マーカー(marker)を作成
GeoJSONファイルからため池の位置をマーカーで描く。
おすすめ
市区町ポリゴンとため池マーカーの同時表示
GeoJSONファイルから市区町界ポリゴンとため池の位置をマーカーで描く。
おすすめ
HTMLのselectによる市区町選択フォーム
HTMLの選択要素を使って、市区町選択のドロップダウンメニューを作成する。
おすすめ
マーカーのカスタマイズ
マーカーの形状、大きさ、色をカスタマイズする。
おすすめ
カテゴリーに応じたマーカー表示
データ項目の区分と照応するマーカーを表示する。
おすすめ
市区町別ーカテゴリーに応じたマーカー表示
HTMLのselectによる市区町選択フォームとカテゴリーに応じたマーカー表示を組み合わせる。