function googleMap(params) {
  var coordX = params.coordX || $('coord_x');
  var coordY = params.coordY || $('coord_y');
  var map_div = params.map || $("map");
  var map;
  var svActive = params.streetView;
  var smallControlActive = params.smallControl
  var typeControlActive = params.typeControl;
  var svContainer;
  var marker;

  function initMap(){
    
    var x = coordX.value;
    var y = coordY.value;
    
    if( x <= 0 || y <= 0 ){
      map_div.innerHTML = "座標が登録されていないため<br/>地図が表示できません。";
      return;
    }

    map = new GMap2( map_div );

    if( smallControlActive ){
      map.addControl(new GSmallMapControl());
    }else{
      map.addControl(new GLargeMapControl());
    }

    if( typeControlActive ){
      map.addControl(new GMapTypeControl());
    }
    map.setCenter(new GLatLng( y, x ), 16);
    map.addOverlay( createMarker() );

    if( svActive ){
      svContainer = document.createElement("div");
      svContainer.style.width="450px";
      svContainer.style.height="300px";
    }
  }

  function createMarker(){
    marker = new GMarker( map.getCenter());
    if( svActive ){
      GEvent.addListener(marker, "click", function() {
        showStreetView();
      });
    }
    return marker;
  }

  function showStreetView(){
    var markerPos = marker.getPoint();
    
    setTimeout(function(){
      svObj = new GStreetviewPanorama(svContainer,{latlng:markerPos});
    }, 10);
    
    marker.openInfoWindow(svContainer);
  }
  
  Event.observe( window, 'load', initMap);

};