Google Mapsには地図がドラッグされた時などにイベントをキャッチして処理する機能があります。Google Mapsに用意されているイベントには以下のものがあります。
click | 地図やマーカーのクリック |
---|
move | 地図のドラッグ中に発生 |
---|
movestart | 地図のドラッグ開始時に発生 |
---|
moveend | 地図のドラッグ終了時に発生 |
---|
zoom | 地図の表示倍率が変化した後に発生 |
---|
maptypechanged | 地図の種類(地図、衛星写真)が切り替わった後に発生 |
---|
infowindowopen | 情報ウィンドウが表示された時に発生 |
---|
infowindowclose | 情報ウィンドウが閉じられた時に発生 |
---|
addoverlay | マーカーやアイコンが追加された後に発生 |
---|
removeoverlay | マーカーやアイコンが削除された後に発生(clearOverlayでは発生しない) |
---|
clearoverlays | 全てのマーカーやアイコンが削除された後に発生 |
---|
ここでは地図がドラッグされている間、位置をフォームのテキストフィールドに表示するサンプルを作成してみます。まず、イベントを追加するにはGEventのaddListener()メソッドを使います。このメソッドの最初の引数が、どの地図に対してイベントを追加するかの指定になっています。地図が複数ある場合には対象としたい地図を指定することができるようになっています。次の引数がイベント名です。このイベント名は上記の表で示したものになります。三番目の引数がイベントが発生した際に呼び出される関数名になります。これで地図にイベントが追加されます。(サンプルを
実行する)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://maps.google.com/maps?file=api&v=1&key=ABQIAAAAasAJryKxWJnBFVJa487d9hTHGAxTVT7IRADYa-JdYz7xQ8IQZBSthgDZdggYpQHsmm6WYtHstQFfLA" type="text/javascript"></script>
</head>
<body>
<div id="map" style="width: 500px; height: 400px"></div>
<script type="text/javascript">
//<![CDATA[
var map = new GMap(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.centerAndZoom(new GPoint(137, 36), 15);
GEvent.addListener(map, "move", getMapXY);
function getMapXY()
{
var LatLngObj = map.getCenterLatLng();
document.getElementById("mapX").value = LatLngObj.x;
document.getElementById("mapY").value = LatLngObj.y;
}
//]]>
</script>
<form>
経度:<input type="text" id="mapX" /><br />
緯度:<input type="text" id="mapY" /><br />
</form>
</body>
</html>
他にもいろいろなイベントを指定することができます。以下のサンプルはズームが変化した時に、ズームの値をテキストフィールドに表示します。(サンプルを
実行する)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://maps.google.com/maps?file=api&v=1&key=ABQIAAAAasAJryKxWJnBFVJa487d9hTHGAxTVT7IRADYa-JdYz7xQ8IQZBSthgDZdggYpQHsmm6WYtHstQFfLA" type="text/javascript"></script>
</head>
<body>
<div id="map" style="width: 500px; height: 400px"></div>
<script type="text/javascript">
//<![CDATA[
var map = new GMap(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.centerAndZoom(new GPoint(137, 36), 15);
GEvent.addListener(map, "zoom", getMapZoom);
function getMapZoom()
{
document.getElementById("zm").value = map.getZoomLevel();
}
//]]>
</script>
<form>
ズーム:<input type="text" id="zm" /><br />
</form>
</body>
</html>
追加したイベントを削除することができます。削除する場合にはGEvent.addListener()で返されるデータを変数に入れておきます。削除する際にGEvent.removeListener()の引数に指定することで設定したイベントを削除することができます。(サンプルを
実行する)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://maps.google.com/maps?file=api&v=1&key=ABQIAAAAasAJryKxWJnBFVJa487d9hTHGAxTVT7IRADYa-JdYz7xQ8IQZBSthgDZdggYpQHsmm6WYtHstQFfLA" type="text/javascript"></script>
</head>
<body>
<div id="map" style="width: 500px; height: 400px"></div>
<script type="text/javascript">
//<![CDATA[
var map = new GMap(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.centerAndZoom(new GPoint(137, 36), 15);
zoomEvent = GEvent.addListener(map, "zoom", getMapZoom);
function getMapZoom()
{
document.getElementById("zm").value = map.getZoomLevel();
}
function removeEvent()
{
GEvent.removeListener(zoomEvent);
}
//]]>
</script>
<form>
ズーム:<input type="text" id="zm" /><br />
<input type="button" value="ズームイベントを削除" onClick="removeEvent()" /><br />
</form>
</body>
</html>
次章ではアマゾンを利用してみます。
[
第八章 1:アマゾンのWebサービスを利用するにはへ]
[
目次へ]
(2006.1.24)