7

Ho ottenuto un'app Windows Form che utilizza Google Earth in cui gli utenti possono disegnare un poligono sulla mappa che viene utilizzato come geofence.Google Earth Determinazione del livello di zoom dal riquadro di delimitazione

Quello che mi piacerebbe fare è essere in grado di ingrandire il poligono in modo che si adatti bene sullo schermo con un clic di un pulsante. Una sorta di zoom per adattarsi alla funzione.

Trovare il centro del poligono e impostare la telecamera di Google Earth su quel lat/long è facile.

Quello che mi serve è un algoritmo che prende una casella di delimitazione di lats \ long, altezza schermo \ larghezza e quindi determina l'altitudine per impostare la telecamera.

Qualcuno ha questo algoritmo o sa dove si può trovare?

Grazie !!

risposta

7

Per "ingrandire il poligono" o qualsiasi altro KmlObject è probabilmente più semplice utilizzare lo earth-api-utility-library.

Vedi metodi createBoundsView, setToBoundsView e soprattutto flyToObject

Ad esempio, se l'oggetto è geGEPlugin e polygon è un KmlPolygon.

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

Ci sono un paio di problemi con questo. Prima di tutto, per trovare metà della lunghezza della corda dovresti usare 'var dist = r * Math.sin (d/2)' dato che il raggio è l'ipotenusa (non il lato adiacente) del triangolo rilevante. In secondo luogo, la latitudine/longitudine media che si utilizza come centro non sarà corretta in molti casi (ad esempio attraverso "più di" un numero di emisfero in termini di linee). – natevw

+0

Per correttezza, non l'ho mai realmente usato, è da qui: https://groups.google.com/forum/?fromgroups#!topic/google-earth-browser-plugin/mGBMtHUU1FM - In realtà ora suggerirei di usare il earth-api-utility-library [http://code.google.com/p/earth-api-utility-library/wiki/GEarthExtensionsViewReference – Fraser