Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Floating point zoom and setZoom in Google Maps

The Google Maps documentation says that .zoom and setZoom() expect numbers. Everything would seem to point to these numbers being integers. However, today I gave the latter a floating point value and it worked ... sort of.

var MAP;

function initialize() {
    MAP = new google.maps.Map(document.getElementById('map-canvas'), 
    {
        zoom : 5,
        center : new google.maps.LatLng(-25.610111, 134.354806), 
        mapTypeId : google.maps.MapTypeId.ROADMAP
    });
}

Using the above code, I was able to have debugger access to the MAP object.

Now in the case of continental Australia, if I have a zoom of 4, I get a slice of South East Asia, all of Papua New Guinea and New Zealand and, in the centre, the Great Southern Land. If I have a zoom of 5 I get the mainland but without Tasmania -- definitely a "bad thing". The optimal zoom, discovered using MAP.setZoom() interactively, is 4.3. This is great, except that nothing else works with that zoom. When I try to draw polygons or a heatmap, Maps throws errors like

GET https://khms0.google.com/kh?v=178&hl=en-US&x=0&y=0&z=0.2999999999999998&token=77820 404 (OK)

I imagine that the 'z' value above is what's causing the 404 -- khms0.google.com is not expecting a floating point 'z' value.

So how do I get a more appropriately zoomed homeland, with polygons, markers, heatmaps, KML layers and what have you?

By the way, I did try using fitBounds() but it didn't change anything with respect to the visible contents of the viewport apart from shifting the map around a new centre.

var se = new google.maps.LatLng(-44.999315, 156.971343); // Tasman Sea
var nw = new google.maps.LatLng(-9.063496, 106.346343); // Indian Ocean
var bs = new google.maps.LatLngBounds(nw,se);
MAP.fitBounds(bs);
like image 247
bugmagnet Avatar asked Oct 14 '25 04:10

bugmagnet


1 Answers

The zoom level must be an integer (at least at present). It used to be documented, but I don't see it stated specifically anywhere.

If a integer zoom level doesn't work for you, either change the size of the <div> displaying the map or make your own custom tiles that have a different scale.

like image 73
geocodezip Avatar answered Oct 17 '25 23:10

geocodezip



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!