var mapOptions = {
  lat: null,
  lng: null,
  zl: 13,
  pin: false,
  address: null,
  map_id: '#map_area'
};

$(document).ready(function(){
  if (GBrowserIsCompatible()) {
    //GMap2オブジェクトの生成と設定
    var map = new GMap2($(mapOptions.map_id).get(0));
    if (mapOptions.lat && mapOptions.lng) {
      //通常の位置移動
      map.setCenter(new GLatLng(mapOptions.lat, mapOptions.lng), mapOptions.zl);
      addPin(mapOptions);
    }
    else if (mapOptions.address) {
      //ジオコーダーオブジェクトで位置移動
      var geocoder = new GClientGeocoder();
      geoSearchAndMoove(mapOptions);
    }
    else {
      return;
    }
    map.addControl(new GMapTypeControl());
    map.addControl(new GScaleControl());
    map.addControl(new GLargeMapControl());
//    map.enableScrollWheelZoom();
    map.enableContinuousZoom();
    map.enableDoubleClickZoom();
    
    $(document).unload(function(){
      GUnload();
    });
  }
  //ジオコーディングを実行して、マップを移動。
  function geoSearchAndMoove(mapOptions) {
    mapOptions.address && geocoder.getLatLng(
      mapOptions.address,
      function(point) {
        if (point) {
          map.setCenter(point, mapOptions.zl);
          mapOptions.lat = point.lat();
          mapOptions.lng = point.lng();
          addPin(mapOptions);
        }
      }
    );
  }
  //中心位置にピンを立てる
  function addPin(mapOptions) {
    if (mapOptions.pin) {
      var marker = new GMarker(new GLatLng(mapOptions.lat,mapOptions.lng));
      map.addOverlay(marker);
      var html = '<div style="width:210px;font-size:small">'+mapOptions.address+'</div>';
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
    }
  }
});
