リアルタイムの交通渋滞情報を Google Maps API では TrafficLayer を使用して地図に取り込むことができます。いくつか方法があるようです。
◆その1
簡単な方法としては、「交通レイヤー」を使います。既にあるソースのmap = new google.maps.Map(document.getElementById(“map_canvas”), myOptions); の下に、下記scriptを記述すればOKです。
Google先生のこのページに「Google Maps JavaScript API V3 オーバーレイ」についての説明があります。
<script type="text/javascript">
//◆個別に指定する初期表示の設定
var center = new google.maps.LatLng(25.03926, 121.50639);
var zoom = 12;
var mapTypeId = google.maps.MapTypeId.ROADMAP //通常のデフォルト
//var mapTypeId = google.maps.MapTypeId.SATELLITE //航空写真タイル
//var mapTypeId = google.maps.MapTypeId.HYBRID //航空写真タイルと主要な機能(道路、地名)のタイル レイヤの組み合わせ
//var mapTypeId = google.maps.MapTypeId.TERRAIN //起伏を示すタイル(高度や水系)
</script>
<script type="text/javascript">
//<![CDATA[
var map;
function initialize()
{
var myOptions =
{
disableDefaultUI: false,//◆API のデフォルトの UI 設定をオフ(無効)にしたい場合は”true”
//◆ナビゲーションコントロール
navigationControl: true,
navigationControlOptions:
{
//◆通常 ズームコントロール
style: google.maps.NavigationControlStyle.DEFAULT,
position: google.maps.ControlPosition.LEFT_TOP
},
//◆マップタイプコントロール
mapTypeControl: true,
mapTypeControlOptions:
{
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
position: google.maps.ControlPosition.TOP_RIGHT
},
//◆スケールコントロール
scaleControl: true,
scaleControlOptions:
{
position: google.maps.ControlPosition.TOP_CENTER
},
center: center,
zoom: zoom,
mapTypeId: mapTypeId
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var trafficLayer = new google.maps.TrafficLayer();
trafficLayer.setMap(map);
}
window.onload=initialize;
//]]>
</script>
交通渋滞情報レイヤーサンプル地図(1)・・・レイヤーを使用
◆その2
つぎの方法は、Google’s traffic tiles(トラフィックタイル)を使用して、ImageMapType (イメージマップタイプ)を使います。 Google先生の「Google Maps Javascript API V3 Map Types」のページに「ImageMapType」の説明があります。私の標準マップのソースに下記を追加記述すればOKです。 このクラス(ImageMapTypeのクラス)は、tileSizeとgetTileUrlの定義が必要なImageMapTypeOptionsオブジェクトを使用するとあります。ImageMapTypeOptions オブジェクトの仕様は、コチラ。
その1の交通レイヤーを使った方が表示は速いです。
<script type="text/javascript">
//◆個別に指定する初期表示の設定
var center = new google.maps.LatLng(37.76, -122.45);
var zoom = 12;
var mapTypeId = google.maps.MapTypeId.ROADMAP //通常のデフォルト
//var mapTypeId = google.maps.MapTypeId.SATELLITE //航空写真タイル
//var mapTypeId = google.maps.MapTypeId.HYBRID //航空写真タイルと主要な機能(道路、地名)のタイル レイヤの組み合わせ
//var mapTypeId = google.maps.MapTypeId.TERRAIN //起伏を示すタイル(高度や水系)
</script>
<script type="text/javascript">
//<![CDATA[
var map;
var trafficOptions =
{
getTileUrl: function(coord, zoom)
{
return "http://mt3.google.com/mapstt?" + "zoom=" + zoom + "&x=" + coord.x + "&y=" + coord.y + "&client=api";
},
tileSize: new google.maps.Size(256, 256),
isPng: true
};
var trafficMapType = new google.maps.ImageMapType(trafficOptions);
function initialize()
{
var myOptions =
{
disableDefaultUI: false,//◆API のデフォルトの UI 設定をオフ(無効)にしたい場合は”true”
//◆ナビゲーションコントロール
navigationControl: true,
navigationControlOptions:
{
//◆通常 ズームコントロール
style: google.maps.NavigationControlStyle.DEFAULT,
position: google.maps.ControlPosition.LEFT_TOP
},
//◆マップタイプコントロール
mapTypeControl: true,
mapTypeControlOptions:
{
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
position: google.maps.ControlPosition.TOP_RIGHT
},
//◆スケールコントロール
scaleControl: true,
scaleControlOptions:
{
position: google.maps.ControlPosition.TOP_CENTER
},
center: center,
zoom: zoom,
mapTypeId: mapTypeId
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
map.overlayMapTypes.insertAt(0, trafficMapType);
}
window.onload=initialize;
//]]>
</script>
交通渋滞情報ImageMapサンプル地図(2)・・・・・ImageMaptypeを使用
なお、ImageMapTypeを使ってGoogle Street View(グーグルストリートビュー)の青い道路を表示する方法はコチラ。
◆交通情報を表示させるON/OFFボタンを追加する
通所、交通情報が地図に表示されていると邪魔ですので、必要なときに地図に表示できるようにボタンを追加しておきます。
上記、その1 交通渋滞情報レイヤーサンプル地図(1)を変更します。朱書き部。
<script type="text/javascript">
//◆個別に指定する初期表示の設定
var center = new google.maps.LatLng(35.719758,139.312134);
var zoom = 12;
var mapTypeId = google.maps.MapTypeId.ROADMAP //通常のデフォルト
//var mapTypeId = google.maps.MapTypeId.SATELLITE //航空写真タイル
//var mapTypeId = google.maps.MapTypeId.HYBRID //航空写真タイルと主要な機能(道路、地名)のタイル レイヤの組み合わせ
//var mapTypeId = google.maps.MapTypeId.TERRAIN //起伏を示すタイル(高度や水系)
</script>
<script type="text/javascript">
//<![CDATA[
var map, trafficLayer;
function initialize()
{
var myOptions =
{
disableDefaultUI: false,//◆API のデフォルトの UI 設定をオフ(無効)にしたい場合は”true”
//◆ナビゲーションコントロール
navigationControl: true,
navigationControlOptions:
{
//◆通常 ズームコントロール
style: google.maps.NavigationControlStyle.DEFAULT,
position: google.maps.ControlPosition.LEFT_TOP
},
//◆マップタイプコントロール
mapTypeControl: true,
mapTypeControlOptions:
{
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
position: google.maps.ControlPosition.TOP_RIGHT
},
//◆スケールコントロール
scaleControl: true,
scaleControlOptions:
{
position: google.maps.ControlPosition.TOP_CENTER
},
center: center,
zoom: zoom,
mapTypeId: mapTypeId
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
trafficinfo()
}
function trafficinfo()
{
trafficLayer = new google.maps.TrafficLayer();
trafficLayer.setMap(map);
trafficLayer.setMap(trafficLayer.getMap() ? null : map);
}
function toggletraffic()
{
trafficLayer.setMap(trafficLayer.getMap() ? null : map);
}
window.onload=initialize;
//]]>
</script>
コピペ用
<script type="text/javascript">
//◆個別に指定する初期表示の設定
var center = new google.maps.LatLng(35.719758,139.312134);
var zoom = 12;
var mapTypeId = google.maps.MapTypeId.ROADMAP //通常のデフォルト
//var mapTypeId = google.maps.MapTypeId.SATELLITE //航空写真タイル
//var mapTypeId = google.maps.MapTypeId.HYBRID //航空写真タイルと主要な機能(道路、地名)のタイル レイヤの組み合わせ
//var mapTypeId = google.maps.MapTypeId.TERRAIN //起伏を示すタイル(高度や水系)
</script>
<script type="text/javascript">
//<![CDATA[
var map, trafficLayer;
function initialize()
{
var myOptions =
{
disableDefaultUI: false,//◆API のデフォルトの UI 設定をオフ(無効)にしたい場合は”true”
//◆ナビゲーションコントロール
navigationControl: true,
navigationControlOptions:
{
//◆通常 ズームコントロール
style: google.maps.NavigationControlStyle.DEFAULT,
position: google.maps.ControlPosition.LEFT_TOP
},
//◆マップタイプコントロール
mapTypeControl: true,
mapTypeControlOptions:
{
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
position: google.maps.ControlPosition.TOP_RIGHT
},
//◆スケールコントロール
scaleControl: true,
scaleControlOptions:
{
position: google.maps.ControlPosition.TOP_CENTER
},
center: center,
zoom: zoom,
mapTypeId: mapTypeId
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
trafficinfo()
}
function trafficinfo()
{
trafficLayer = new google.maps.TrafficLayer();
trafficLayer.setMap(map);
trafficLayer.setMap(trafficLayer.getMap() ? null : map);
}
function toggletraffic()
{
trafficLayer.setMap(trafficLayer.getMap() ? null : map);
}
window.onload=initialize;
//]]>
</script>
<body内>
ON/OFF用のトグルボタンを追加
<div> <button onclick="toggletraffic()">交通情報を表示</button> </div> <div id="map_canvas"> </div>
完成したサンプル地図: リアルタイムの交通渋滞情報を表示させる「ON/OFFボタン」を配置
◆Google Maps JavaScript API V3 サービスエリア
- 現在交通情報がサポートされているエリア・都市は、コチラ。
◆Google Maps JavaScript API V3
関連記事一覧
スポンサードリンク



2 Comments.