Google Maps API v3 で鉄道網のみを表示する
GoogleマップAPI(v3)には地図レイヤーの表示項目を細かく選べるスタイル付き地図がサポートされている。
MapTypeStyleFeatureType
リファレンスにあるリストにある個々の対象物にたいして色や表示するかなどを設定できる。
その対象物のリストのうち鉄道網に関連するのは下記の二つである。
transit.line
: 交通機関の路線transit.station.rail
: 鉄道駅
上の2つ以外の対象物を非表示とすることで鉄道網の地図が得られる。
なお、transit.line
については航路も表示されるようである。その次善策として水域(water
)を航路と近い色で塗ることとした。
ソースコードのうち鉄道網表示に関係する箇所は下記の通りである。上述の表示・非表示を設定したrailsStyles
を元にしてStyledMapType
を作って、それをMap
インスタンスであるmap
に登録するのみである。
var railsStyles = [
{
featureType: "all",
elementType: "all",
stylers: [{visibility: "off"}]
},
{
featureType: "water",
elementType: "geometry",
stylers: [
{ hue: "#8899CC" }, // 航路の線と色相を合わせて目立たなくする
{ visibility: "simplifed" }
]
},
{
featureType: "transit.line",// 交通機関の路線
elementType: "all", // ラベルを含めてすべて
stylers: [
{ visibility: "on" }
]
},
{
featureType: "transit.station.rail",// 電車の駅
elementType: "all", // ラベルを含めてすべて
stylers: [
{ visibility: "on" }
]
}
];
var railsMapType = new google.maps.StyledMapType(railsStyles, {name: "鉄道網"});
map.mapTypes.set("rails", railsMapType);// 登録
map.setMapTypeId("rails");
問題点としては、路線ごとに色がついていたりしないので、特に東京をはじめとする鉄道網が複雑なところでは、路線図としての利用はできないことがある。
なお、上述の内容を他の対象物にすることで道路網だけを表示したり、水域だけを表示(=白地図的利用)をしたりする利用法も可能であろう。