sample »
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script>
var map, infoWindow;
function showFeatures() {
var s = document.createElement('script');
var servicePoint = document.getElementById('service_point').value;
// 表示されてるフューチャーがあれば消す
map.data.forEach(function(f) {
map.data.remove(f);
});
// バルーンが開いていれば閉じる
if (infoWindow) {
infoWindow.close();
}
// JsonPのコールバックを登録する
window.myCallbackFn = function(res) {
if (res.Success) {
// 成功ならば地図に表示する
map.data.addGeoJson(res.Data);
} else {
// 失敗ならメッセージを出して終了
alert(res.Error);
}
};
// scriptタグの埋め込み
s.setAttribute('src', 'https://itdemo-dot-shizu-road-dev.appspot.com/table/' + servicePoint + '?token=admin&jsonp=true&callback=myCallbackFn');
document.body.appendChild(s);
}
function onFeatureClicked(ev) {
var f = ev.feature;
var properties = [];
f.forEachProperty(function(v, k) {
properties.push('<b>' + k + '</b>: ' + v);
});
// バルーンが開いていれば閉じる
if (infoWindow) {
infoWindow.close();
}
// バルーンの作成と表示
infoWindow = new google.maps.InfoWindow({
content: properties.join('<br>'),
position: ev.latLng,
pixelOffset: new google.maps.Size(0, f.getGeometry().getType() === 'Point'? -32: 0)
});
infoWindow.open(map);
}
document.addEventListener('DOMContentLoaded', function() {
// 地図を生成する
map = new google.maps.Map(document.getElementById('map_canvas'), {
center: {lat: 35.5, lng: 138},
zoom: 8
});
// 地図上でフューチャーがクリックされたときの処理を登録する
google.maps.event.addListener(map.data, 'click', onFeatureClicked);
});
</script>
<div id="map_canvas" style="width: 640px; height: 480px;"></div>
サービスポイント:
<select id="service_point">
<option value="mainRoad">mainRoad</option>
<option value="f1">f1</option>
<option value="f2">f2</option>
<option value="roadRegulation">roadRegulation</option>
</select>
<button type="button" onclick="showFeatures();">表示</button>