//このスクリプトはUTF-8で保存する事（直接日本語を埋め込む場合を考慮）

    var map;
    var baseIcon;

    function myGmap(propsData) {

      var point;
      var html;
      var marker;
      var xml;

      map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());

      //アイコン
      baseIcon = new GIcon();
      baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
      baseIcon.iconSize = new GSize(20, 34);
      baseIcon.shadowSize = new GSize(37, 34);
      baseIcon.iconAnchor = new GPoint(9, 34);
      baseIcon.infoWindowAnchor = new GPoint(9, 2);
      baseIcon.infoShadowAnchor = new GPoint(18, 25);

      //XML取得
      GDownloadUrl(propsData, function(data, responseCode) {

        //※非同期なのでこの中に全部集約しないとブラウザによっては実行できない

        xml = GXml.parse(data);

        //中心座標とズーム
        var gcenter = xml.documentElement.getElementsByTagName("cnpoint");
        point = new GLatLng(parseFloat(gcenter[0].getAttribute("lat")),
                            parseFloat(gcenter[0].getAttribute("lng")));
        var gzoom = xml.documentElement.getElementsByTagName("zoom");
        var gzoomvalue = parseFloat(gzoom[0].getAttribute("val"));
        map.setCenter(point, gzoomvalue);

        //マーカー描画
        var markers = xml.documentElement.getElementsByTagName("markerinfo");
        for (var i = 0; i < markers.length; i++) {
          point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                              parseFloat(markers[i].getAttribute("lng")));
          html = createHtml(markers[i].getAttribute("htmlstyle"),markers[i].getAttribute("htmlurl"),markers[i].getAttribute("htmlstr"));
          html = html + createHtml(markers[i].getAttribute("descstyle"),"",markers[i].getAttribute("description"));
          marker = createMarker(point,markers[i].getAttribute("iconletter"),html);
          map.addOverlay(marker);
        }

        var i = 0;
        var j = 0;

        //ポリライン描画
        var polylines = xml.documentElement.getElementsByTagName("polyline");
        for (i = 0; i < polylines.length; i++) {
          var points = [];
          var polycolors = polylines[i].getElementsByTagName("plcolor");
          var polycolor = polycolors[0].getAttribute("val");
          var polyweights = polylines[i].getElementsByTagName("plweight");
          var polyweight = parseFloat(polyweights[0].getAttribute("val"));
          var polydensities = polylines[i].getElementsByTagName("pldensity");
          var polydensity = parseFloat(polydensities[0].getAttribute("val"));
          var polyline = polylines[i].getElementsByTagName("plpoint");
          for (j = 0; j < polyline.length; j++) {
            points.push( new GLatLng(parseFloat(polyline[j].getAttribute("lat")),
                                     parseFloat(polyline[j].getAttribute("lng"))));
          }
          map.addOverlay(new GPolyline(points, polycolor, polyweight, polydensity));
        }

        //ポリライン描画（円）
        var circles = xml.documentElement.getElementsByTagName("circle");
        for (i = 0; i < circles.length; i++) {
          var cccolors = circles[i].getElementsByTagName("cccolor");
          var cccolor = cccolors[0].getAttribute("val");
          var ccweights = circles[i].getElementsByTagName("ccweight");
          var ccweight = parseFloat(ccweights[0].getAttribute("val"));
          var ccdensities = circles[i].getElementsByTagName("ccdensity");
          var ccdensity = parseFloat(ccdensities[0].getAttribute("val"));
          var ccradii = circles[i].getElementsByTagName("ccradius");
          var ccradius = parseFloat(ccradii[0].getAttribute("val"));
          var ccpoints = circles[i].getElementsByTagName("ccpoint");
          var cclat = parseFloat(ccpoints[0].getAttribute("lat"));
          var cclng = parseFloat(ccpoints[0].getAttribute("lng"));
          drawCircle(cclat, cclng, ccradius, ccweight, ccdensity, cccolor);
        }

        xml = null;

      });


    }

    function createMarker(point, letter ,html) {
      //マーカーアイコンと情報ウインドウ
      var icon = new GIcon(baseIcon);
      icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
      var marker = new GMarker(point, icon);
      GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }

    function createHtml(style, url ,str) {
      //XMLから取得した情報からHTMLを生成
      var html = "<div style='" + style + "'>";
      if (url == "") {
        html = html + str;
      } else {
        html = html + "<a href='" + url + "' target=_blank>";
        html = html + str + "</a>";
      }
      html = html + "</div>";
      return html;
    }

    function drawCircle(cclat, cclng, radius, polyweight, polydensity, polycolor) {
      if (cclat != null && cclng != null && radius != null) {
          var circleQuality = 1; //12くらいでもまあまあ見れる
          var theradius=.00001 * radius;
          var circleSquish = .88; 
          var M = (Math.PI)/180;
          var points = []; 
          for(var q=0; q<=360; q+=circleQuality){ 
             points.push(new GLatLng(cclat + (theradius * Math.cos(q * M))* circleSquish, cclng + (theradius * Math.sin(q * M)))); 
          }
          map.addOverlay(new GPolyline(points, polycolor, polyweight, polydensity)); 
        }
    }

    function debug_println(str) {
      document.getElementById("debug").innerHTML = document.getElementById("debug").innerHTML + str + "<br />";
    }

    function initDebugArea() {
      document.getElementById("debug").innerHTML = "";
    }

