google maps projection, scale denomiator
by Leo
HTML
<script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false&v=3.19"></script>
<div id="zoom">...</div>
<div id="scale1">...</div>
<div id="scale2">...</div>
<div id="delta">...</div>
<div id="map_canvas" style="height:600px;width:800px;"></div>
JavaScript
var map;
var TILE_SIZE = 256;
// From Google Groups:
var circumference = 40075040;
// From OSM = 40041472:
//var circumference = 2 * 6372798.2 * Math.PI;
//Standard:
var DPI = 96;
//OSM: 0.3mm/pixel (about 85.2 American DPI):
//var DPI = 82.5;
var g = google.maps;
var round = Math.round;
var abs = Math.abs;
var opts = {
center: new g.LatLng(54.355995, 48.4317237),
zoom: 13,
mapTypeId: g.MapTypeId.ROADMAP,
scaleControl: true
}
map = new g.Map(document.getElementById("map_canvas"), opts);
g.event.addListener(map, 'idle', function () {
var zoomElement = document.getElementById('zoom');
var scaleElement1 = document.getElementById('scale1');
var scaleElement2 = document.getElementById('scale2');
var deltaElement = document.getElementById('delta');
var mInPx1 = map.getMapScale1();
var mInPx2 = map.getMapScale2();
var scale1 = round(mInPx1 * DPI * (100 / 2.54));
var scale2 = round(mInPx2 * DPI * (100 / 2.54));
var scaleControlWidth = $(
"div.gm-style-cc:has('span'):contains(' км') span" + ", " +
"div.gm-style-cc:has('span'):contains(' km') span" + ", " +
"div.gm-style-cc:has('span'):contains(' м') span" + ", " +
"div.gm-style-cc:has('span'):contains(' m') span"
).next().width();
var ruler1Width = ( scaleControlWidth ? round(mInPx1 * scaleControlWidth) : 0) + " (m/"+scaleControlWidth+"px)";
var ruler2Width = ( scaleControlWidth ? round(mInPx2 * scaleControlWidth) : 0) + " (m/"+scaleControlWidth+"px)";
zoomElement.innerText = "ZoomLevel | " + map.getZoom();
scaleElement1.innerText = "Scale1 | " + "1 / " + scale1 + " (" + mInPx1.toFixed(3) + " m/px)" + ", ruler: " + ruler1Width;
scaleElement2.innerText = "Scale2 | " + "1 / " + scale2 + " (" + mInPx2.toFixed(3) + " m/px)"...