googlemap

by bighostkim

HTML

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>
<script>
var googlemap = {  // designed for 1 map for a page
  map : null,
  markers : [],
  options : {
    zoom : 15, 
    mapTypeId: google.maps.MapTypeId.ROADMAP
  },
  init: function(el, options) {
    el = el || console.log("Invalid map container given");
    var elPos = $(el).css('position')=='static' ? 'relative' : $(el).css('position') 
    this.mapOrgCss = {
      position: elPos,
      width:$(el).width(), 
      height:$(el).height(), 
      top: $(el).css('top'),
      left: $(el).offset().left
    };
    options = options || this.options; 
    this.map = new google.maps.Map(el, options);
    this.addFullscreenControl();
    return this.map;
  },
  showLL      : function(lat,lng) { this.resetMarkers().addMarker({lat:lat,lng:lng}); },
  showAddress : function(address) { this.resetMarkers().addMarker({address:address}); },
  resetMarkers : function() {
    while( this.markers[0] ) {
      this.markers[0].setMap(null);
      this.markers.splice(0, 1);
    }
    return this;
  },
  addMarker  : function(attr) { this.addMarkers([attr]) },
  addMarkers : function(attributes) {
    var infoWindow = new google.maps.InfoWindow();
    var geocoder   = new google.maps.Geocoder();
    var addOne  = function(latlng, attr) {
      var marker = new google.maps.Marker({ position: latlng, map: googlemap.map }); 
      marker.contentHtml = attr.contentHtml || '<b>Foo</b>';
      google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent( marker.contentHtml );
        infoWindow.open(marker.map, marker);
      }); 
      googlemap.map.setCenter(latlng); 
      googlemap.markers.push(marker);
    };
    for (var i=0; i< attributes.length; i++) {
      var attr = attributes[i];
      var latlng;
      if (attr.lat && attr.lng) {
        latlng = new google.maps.LatLng(attr.lat, attr.lng);
        addOne(latlng, attr);
      } else if...