dayjournal memo

Total 992 articles!!

Leaflet #012 – 外部ファイルのGeoJSONでマーカー表示2

Yasunori Kirimoto's avatar

Leaflet #008 – 外部ファイルのGeoJSONでマーカー表示」とは違う方法の別ファイルにGeoJSONを保存して外部から読み込む方法を記載します。

GeoJSONのデータを用意するための方法は「Leaflet #007 – GeoJSONでマーカー表示」を参照。

この方法も、GeoJSONのオブジェクトはWebサーバーにアップロードしないと表示されないようです。


Leafletで外部ファイルのGeoJSONでマーカー表示するためには下記のように記述します。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sample</title>

    <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
    <script src="http://maps.google.com/maps/api/js?v=3.2&amp;sensor=false"></script>
    <script src="http://matchingnotes.com/javascripts/leaflet-google.js"></script>

    <script src="./gj/sample.geojson"></script>

    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
    <link href="CSS/stylesheet.css" rel="stylesheet" />

</head>

<body>

    <div id="map"></div>

    <script src="./js/script.js"></script>

</body>

</html>

stylesheet.css


         html, body {
            height: 100%;
            padding: 0;
            margin: 0;
        }

        #map {
            z-index: 0;
            height: 100%;
        }

        .leaflet-google-layer {
            z-index: 1;
        }

        .leaflet-map-pane {
            z-index: 2;
        }

sample.geojson


var pointdata = {
"type": "FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },

"features": [
{ "type": "Feature", "properties": { "id": 5 }, "geometry": { "type": "Point", "coordinates": [ 139.73025667682498, 35.684728657838271 ] } },
{ "type": "Feature", "properties": { "id": 4 }, "geometry": { "type": "Point", "coordinates": [ 139.7404818862039, 35.630246376589362 ] } },
{ "type": "Feature", "properties": { "id": 3 }, "geometry": { "type": "Point", "coordinates": [ 139.77705667359774, 35.713791961149241 ] } },
{ "type": "Feature", "properties": { "id": 2 }, "geometry": { "type": "Point", "coordinates": [ 139.76722474150262, 35.68153424228494 ] } },
{ "type": "Feature", "properties": { "id": 1 }, "geometry": { "type": "Point", "coordinates": [ 139.7001709646139, 35.690318577295173 ] } }
]
};

script.js


var t_std = new L.tileLayer('http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
    attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html' target='_blank'>国土地理院</a>"
});

var t_pale = new L.tileLayer('http://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png', {
    attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html' target='_blank'>国土地理院</a>"
});

var t_ort = new L.tileLayer('http://cyberjapandata.gsi.go.jp/xyz/ort/{z}/{x}/{y}.jpg', {
    attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html' target='_blank'>国土地理院</a>"
});

var o_std = new L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    attribution: '&amp;copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
});

var g_roadmap = new L.Google('ROADMAP');

var g_satellite = new L.Google('SATELLITE');

var g_hybrid = new L.Google('HYBRID');

var map = L.map('map', {
    center: [35.6831925, 139.7511307],
    zoom: 13,
    layers: [t_pale]
});

var geoJson_sample = L.geoJson(pointdata).addTo(map);

var Map_b = {
    "地理院地図 標準": t_std,
    "地理院地図 淡色": t_pale,
    "地理院地図 オルソ": t_ort,
    "OpenStreetMap 標準": o_std,
    "GoogleMap 標準": g_roadmap,
    "GoogleMap オルソ": g_satellite,
    "GoogleMap ハイブリッド": g_hybrid,
};

L.control.scale({ maxWidth: 250, imperial: false }).addTo(map);

L.control.layers(Map_b, null, { collapsed: false }).addTo(map);

index.htmlを実行すると下記のようにブラウザで表示されます。 ※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

Leaflet_012_01


表示させるファイルを変更したい場合: ./gj/sample.geojson~のリンク先と、 var geoJson_sample~の部分の記述を変更します。


<script src="./gj/data.geojson"></script>

var geoJson_sample = L.geoJson(newdata).addTo(map);

この方法で読み込む場合はGeoJSONを変数に格納する必要があるため、頭に「var 変数名 = 」最後に「;」を記述します。



book

Q&A