
オブジェクト形式で複数の地物(feature)の情報をカテゴリ分けし、任意のカテゴリの地物のみピンを立ててみます。
今回の内容はLeafletで位置情報をオブジェクトの形式で持つように変えてみようのhttps://github.com/inunosinsi/Leaflet_OpenStreetMap_Sample/blob/main/6.htmlのコードを改修します。
はじめに、下記のように地物をたくさん登録します。
let features = [
	{
		"type" : "Feature",
		"properties" : {
			"name" : "上賀茂神社",
			"category" : "shrine"
		},
		"geometry" :  {
			"type": "Point",
			"coordinates" : [135.75224, 35.06048]
		}
	},
	{
		"type" : "Feature",
		"properties" : {
			"name" : "松尾大社",
			"category" : "shrine"
		},
		"geometry" :  {
			"type": "Point",
			"coordinates" : [135.685283, 35.000186]
		}
	},
	{
		"type" : "Feature",
		"properties" : {
			"name" : "八坂神社",
			"category" : "shrine"
		},
		"geometry" :  {
			"type": "Point",
			"coordinates" : [135.778254, 35.003608]
		}
	},
	{
		"type" : "Feature",
		"properties" : {
			"name" : "城南宮",
			"category" : "shrine"
		},
		"geometry" :  {
			"type": "Point",
			"coordinates" : [135.746952, 34.950646]
		}
	},
	{
		"type" : "Feature",
		"properties" : {
			"name" : "二条城",
			"category" : "castle"
		},
		"geometry" :  {
			"type": "Point",
			"coordinates" : [135.747795, 35.014135]
		}
	},
	{
		"type" : "Feature",
		"properties" : {
			"name" : "金閣寺",
			"category" : "temple"
		},
		"geometry" :  {
			"type": "Point",
			"coordinates" : [135.728440, 35.039529]
		}
	},
	{
		"type" : "Feature",
		"properties" : {
			"name" : "銀閣寺",
			"category" : "temple"
		},
		"geometry" :  {
			"type": "Point",
			"coordinates" : [135.798032, 35.026549]
		}
	}
];
地物を登録する際にpropertiesでcategoryの値を追加しておきます。
今回はshirine(神社)、castle(城)とtemple(寺)の地物を追加しています。
続いて、
L.geoJSON(features).addTo(map);
を
L.geoJSON(features, {
	filter: function(feature, layer) {
		switch(feature.properties.category){
			case "shrine":
				return true;
			default:
				return false;
		}
	}
}).addTo(map);
に書き換えます。
コードを変更した後、ファイルをクリックしてブラウザ上で実行してみますと、shrine(神社)の地物のみピンが立ちます。
L.geoJSONの第一引数のオブジェクトで、filterで無名関数を指定すると、各地物のオブジェクトを順番に確認します。
無名関数内でtrue(真)を返すとピンが立ち、false(偽)を返すとピンは立ちません。
if文で地物毎のカテゴリ(category)を確認し、表示したいカテゴリの地物のみ、trueを返すように書くことで、任意の地物のみのピンを立てることができます。
今回のコードはhttps://github.com/inunosinsi/Leaflet_OpenStreetMap_Sample/blob/main/12.html