例-1:ドラッグ&ドロップされた領域を取得する

マーカーをドラッグ&ドロップすると、その開始位置の緯度経度、終了地点の緯度経度、中心座標の緯度経度を表示します。

 
<!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>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google Maps JavaScript API Example</title>
    <script src="http://maps.google.co.jp/maps?file=api&v=2&key=[あなたのAPIキー]&sensor=false"
 type="text/javascript"></script>
    <script type="text/javascript">
    //<![CDATA[
    
    //描画されたラインを記憶しておくための変数
    //null にしておくことで初期化
    var line = null;
    
    //ドラッグの開始地点と終了地点を記憶するための変数
    var p1, p2;
    
    //吹き出しの表示用
    var infoTxt = "マーカーを<b>ドラッグ&ドロップ</b>してください";
    
    //地図のハンドルを保存するための変数
    var map;
    
    function load() {
      if (GBrowserIsCompatible()) {
        //地図の中心地点を設定
        var centerPos = new GLatLng(35.677335, 139.744613);

        //地図を作成
        map = new GMap2(document.getElementById("map"));
        map.setCenter(centerPos, 16);

        //マーカーを作成
        var marker = new GMarker(centerPos, {draggable: true});

        GEvent.addListener(marker, "dragstart", function() {
          //マーカーがドラッグを開始したら、現在の経度緯度をp1に記憶する
          p1 = marker.getLatLng();
          
          //吹き出しを閉じる
          marker.closeInfoWindow();
        });

        GEvent.addListener(marker, "drag", function() {
            //マーカーがドラッグ中は、現在の経度緯度をp2に記憶する
            p2 = marker.getLatLng();
            
            //ラインを描画する
            drawLine([p1, p2]);
        });

        GEvent.addListener(marker, "dragend", function() {
            //マーカーがドラッグを終了したので、現在の経度緯度をp2に記憶する
            p2 = marker.getPoint();
            
            //
            var points = new Array();
            points.push(p1);
            points.push(new GLatLng(p1.lat(), p2.lng()));
            points.push(p2);
            points.push(new GLatLng(p2.lat(),p1.lng()));
            points.push(p1);

            //ラインを削除
            if (line) {
              map.removeOverlay(line);
            }
            
            //四角形の描画
            drawLine(points);
            
            //中心座標の取得
            var box = new GBounds(points);
            var pnt1 = new GLatLng(box.minY, box.minX);
            var pnt2 = new GLatLng(box.maxY, box.maxX);
            var bound = new GLatLngBounds(pnt1,pnt2);
            var center = bound.getCenter();

            //結果を吹き出しに表示
            infoTxt = "開始位置:" + p1 + "<br>"
                    + "終了位置:" + p2 + "<br>"
                    + "中心座標:" + center;
            marker.openInfoWindowHtml(infoTxt);
        });

        GEvent.addListener(marker, "click", function() {
            //マーカーがクリックされたら、吹き出しを開く
            marker.openInfoWindowHtml(infoTxt);
        });

        //マーカーを地図上に配置
        map.addOverlay(marker);
        
        //マーカーに対して、擬似的にイベント"click"を発生させる
        GEvent.trigger(marker,"click");
      }
    }
    
    //======================================================
    //  配列 points の位置を全て通るラインを描画する
    //======================================================
    function drawLine(points) {
      //直前のラインを削除する
      if (line != null) {
        map.removeOverlay(line);
      }
      
      //ラインを描画する
      line = new GPolyline(points, "#FF0000", 10);
      map.addOverlay(line);
    }

    //ページが読み込まれたら、load関数を呼び出す。
    window.onload = load;
    
    //別のページへ移動するときにGUnload関数を呼び出して、メモリ解放
    window.onunload = GUnload;
    //]]>
    </script>
  </head>
  <body>
    <div id="map" style="width: 500px; height: 500px;"></div>
  </body>
</html>
サイト内検索
Maps APIの本を書きました
Google Maps APIプログラミング入門
全480ページ。Google Maps API ver.2, ver.3, for Flash, Static Maps API v2, Google Maps API Primery, ライセンス…など、Google Maps APIに関連する幅広い内容の本を書きました。
このサイトで公開しているサンプルはもちろん、本のために作ったサンプルも満載です。
詳しくはこちら

Google Maps Designer
Google Maps Designer