If you are not satisfied with default Google map Marker (Default google marker can only be a icon, image or shape),
for example adding a border, then you should use richmarker!
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/richmarker/
Inside richmarker:
RickMarker extends from google.maps.OverlayView
RichMarker.prototype.onAdd
var panes = this.getPanes();//Returns the panes in which this OverlayView can be rendered. The panes are not initialized until onAdd is
called by the API.
panes.overlayMouseTarget.appendChild();//This pane contains elements that receive DOM mouse events, such as the
transparent targets for markers. It is above the floatShadow, so that markers in the shadow of the info window can be clickable. (Pane 5).
RichMarker.prototype.draw
var projection = this.getProjection(); //Returns the MapCanvasProjection object
associated with this OverlayView. The projection is not initialized until onAdd is
called by the API.
var latLng = (this.get(‘position‘));
var pos = projection.fromLatLngToDivPixel(latLng);//Computes the pixel coordinates of the given geographical
location in the DOM element that holds the draggable map.
var offset = this.getOffset_();
this.markerWrapper_.style[‘top‘] = (pos.y + offset.height) + ‘px‘;
this.markerWrapper_.style[‘left‘] = (pos.x + offset.width) + ‘px‘;