7

Ich habe eine Windows Forms App, die Google Earth nutzt, wo Benutzer ein Polygon auf der Karte zeichnen können, das als Geofence verwendet wird.Google Earth Zoomstufe von Begrenzungsrahmen bestimmen

Was ich tun möchte, ist in der Lage, auf das Vieleck zu zoomen, so dass es mit einem einzigen Klick auf dem Bildschirm passt. Eine Art Zoomfunktion

Das Finden der Mitte des Polygons und das Einstellen der Google Earth Kamera auf diesen Breitengrad/Längengrad ist einfach.

Was ich brauche ist ein Algorithmus, der eine Bounding-Box von Lats \ Longs, Bildschirmhöhe \ Breite und dann bestimmt die Höhe, um die Kamera einzustellen.

Hat jemand diesen Algorithmus oder weiß, wo man gefunden werden kann?

Danke !!

Antwort

7

Um "auf das Polygon zu zoomen" oder eine andere KmlObject ist es wahrscheinlich am einfachsten, die earth-api-utility-library zu verwenden.

Siehe die Methoden createBoundsView, setToBoundsView und besonders flyToObject

Zum Beispiel, wo ge ist das GEPlugin Objekt und polygon ist ein KmlPolygon.

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

Es gibt ein paar Probleme mit diesem. Als erstes, um die halbe Sehnenlänge zu finden, sollten Sie 'var dist = r * Math.sin (d/2)' verwenden, da der Radius die Hypotenuse (nicht die benachbarte Seite) des betreffenden Dreiecks ist. Zweitens wird die durchschnittliche Breite/Länge, die Sie als Zentrum verwenden, in vielen Fällen nicht korrekt sein (z. B. über "mehr als" eine Hemisphären-Zahl zeilenweise). – natevw

+0

Um fair zu sein habe ich es nie wirklich benutzt, es kommt von hier: https://groups.google.com/forum/?fromgroups#!topic/google-earth-browser-plugin/mGBMtHUU1FM - ich würde eigentlich jetzt vorschlagen, das zu benutzen Earth-API-Utility-Bibliothek [http://code.google.com/p/earth-api-utility-library/wiki/GEarthextensionsViewReference – Fraser

Verwandte Themen