    /**
     *  Calculate boundary to contains all the markers around given center.
     *  find anti-symmetry again mapCenter of lat and lng
     *
     */
    function bestFitWithCenter(map, bounds, mapCenter) {
        var swLL = bounds.getSouthWest();
        var neLL = bounds.getNorthEast();
         
        //GLog.write("swLLLat="+swLL.lat() + ", swLLLng="+swLL.lng());
    	 //GLog.write("neLLLat="+neLL.lat() + ", neLLLng="+neLL.lng());      
    	 	   	
    	 //leave margin each side  
    	 var marginRatio = 0.0001;
                   
      	 var minLat = Math.min(2*mapCenter.lat() - neLL.lat(), swLL.lat());      	        	 
      	 var maxLat = Math.max(2*mapCenter.lat() - swLL.lat(),  neLL.lat());       	 
      	 var minLng = Math.min(2*mapCenter.lng() - neLL.lng(), swLL.lng());          	   	 
      	 var maxLng = Math.max(2*mapCenter.lng() - swLL.lng(), neLL.lng());
    	 
    	 
    	 //GLog.write("minLat="+minLat + ", minLng="+minLng);
    	 //GLog.write("maxLat="+maxLat + ", maxLng="+maxLng);
    	 
    	   
    	 var minLatLng = new GLatLng(minLat-marginRatio, minLng-marginRatio);
    	 var maxLatLng = new GLatLng(maxLat+marginRatio, maxLng+marginRatio);
    	 
     	 bounds.extend(maxLatLng);
    	 bounds.extend(minLatLng);     	
    	 
    	 map.setZoom(map.getBoundsZoomLevel(bounds));
    	 map.setCenter(mapCenter);     
    }
    
    
        /**
     *  Calculate boundary to contains all the markers around given center.
     *  find anti-symmetry again mapCenter of lat and lng
     *
     */
    function bestFitWithCenterAndMinLLMaxLL(map, bounds, mapCenter, minLat, minLng, maxLat, maxLng) {
       
    	 	   	
    	 //leave margin each side  
    	 var marginRatio = 0.0001;
      	 
    	 //GLog.write("minLat="+minLat + ", minLng="+minLng);
    	 //GLog.write("maxLat="+maxLat + ", maxLng="+maxLng);
    	 
    	   
    	 var minLatLng = new GLatLng(minLat-marginRatio, minLng-marginRatio);
    	 var maxLatLng = new GLatLng(maxLat+marginRatio, maxLng+marginRatio);
    	 
     	 bounds.extend(maxLatLng);
    	 bounds.extend(minLatLng);     	
    	 
    	 map.setZoom(map.getBoundsZoomLevel(bounds));
    	 map.setCenter(mapCenter);     
    }
    
    /**
     * Display all the markers and calculate center of all markers
     *
     */
    function bestFit(map, bounds) {
       map.setZoom(map.getBoundsZoomLevel(bounds));
       map.setCenter(bounds.getCenter());
    }
 
