Scenario : you need to create a rectangle in leaflet based on a point for which you know the long / lat.

function DrawRectangle(lat, lng) {
var km = 12;
// number of km per degree = ~111km (111.32 in google maps, but range varies between 110.567km at the equator and 111.699km at the poles)
// 1km in degree = 1 / 111.32km = 0.0089
// 1m in degree = 0.0089 / 1000 = 0.0000089
var coef = km * 0.0089 / 2;
var latref = lat;
var lonref = lng;
var mx_lat = latref + coef;
var mxm_lat = latref - coef;
var mx_lon = lonref + coef;
var mxm_lon = lonref - coef;
var southWest = L.latLng(mxm_lat, mxm_lon),
northEast = L.latLng(mx_lat, mx_lon),
bounds = L.latLngBounds(southWest, northEast);
var rect = L.rectangle(bounds).addTo(map);
group.addLayer(rect);
}
I realized that above is not exactly a square and below is the one which draws a square from circle.
function DrawCircle(lat, lng) { var circle = L.circle([lat, lng], { color: "red", fillColor: "#f03", fillOpacity: 0.0, radius: 6000.0 }).addTo(map); group.addLayer(circle); var rectangle = L.rectangle(circle.getBounds(), { stroke: false, fill: true, color: '#00f', opacity: 0.1 }).addTo(map); group.addLayer(rectangle); }

function DrawCircle(lat, lng) {
var circle = L.circle([lat, lng], {
color: "red",
fillColor: "#f03",
fillOpacity: 0.0,
radius: 6000.0
}).addTo(map);
group.addLayer(circle);
var rectangle = L.rectangle(circle.getBounds(), {
stroke: false,
fill: true,
color: '#00f',
opacity: 0.1
}).addTo(map);
group.addLayer(rectangle);
}
