Search code examples
geospatialgoogle-earthcomputational-geometrygoogle-earth-plugin

Google Earth Determining zoom level from bounding box


I got a Windows Forms app making use of Google Earth where users can draw a polygon on the map which is used as a geofence.

What I'd like to do is to be able to zoom to the polygon so that it fits nicely on screen with a click of a button. A sort of zoom to fit function.

Finding the centre of the polygon and setting the Google Earth camera to that lat/long is easy.

What I need is an algorithm that takes a bounding box of lats \ longs, screen height \ width and then determines the altitude to set the camera.

Does anyone have this algorithm or know where one can be found?

Thanks!!


Solution

  • To "zoom to the polygon" or any other KmlObject it is probably easiest to use the earth-api-utility-library.

    See the methods createBoundsView, setToBoundsView and especially flyToObject

    For example, where ge is the GEPlugin object and polygon is a KmlPolygon.

    var gex = new GEarthExtensions(ge);
    gex.util.flyToObject(polygon, { boundsFallback: true, aspectRatio: 1 } );