7

J'ai obtenu une application Windows Forms utilisant Google Earth où les utilisateurs peuvent dessiner un polygone sur la carte qui est utilisé comme géofence.Google Earth Détermination du niveau de zoom à partir de la zone de délimitation

Ce que je voudrais faire est de pouvoir zoomer sur le polygone de sorte qu'il s'adapte bien sur l'écran avec un clic d'un bouton. Une sorte de zoom pour s'adapter à la fonction.

Il est facile de trouver le centre du polygone et de régler la caméra Google Earth sur ce lat/long. Ce dont j'ai besoin, c'est d'un algorithme qui prend une boîte de délimitation de lats \ longs, de la hauteur de l'écran \ width, puis détermine l'altitude pour régler la caméra.

Est-ce que quelqu'un a cet algorithme ou sait où l'on peut trouver?

Merci!

Répondre

7

Pour "zoomer sur le polygone" ou tout autre KmlObject, il est probablement plus facile d'utiliser le earth-api-utility-library.

Voir les méthodes createBoundsView, setToBoundsView et surtout flyToObject

Par exemple, lorsque ge est l'objet GEPlugin et polygon est un KmlPolygon.

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

Il y a quelques problèmes avec ceci. Tout d'abord, pour trouver la moitié de la longueur de corde, vous devriez utiliser 'var dist = r * Math.sin (d/2)' puisque le rayon est l'hypoténuse (pas le côté adjacent) du triangle correspondant. Deuxièmement, la latitude/longitude moyenne que vous utilisez comme centre ne sera pas correcte dans de nombreux cas (par exemple, pour "plus que" un nombre d'hémisphères par ligne). – natevw

+0

Pour être juste je ne l'ai jamais vraiment utilisé, c'est à partir d'ici: https://groups.google.com/forum/?fromgroups#!topic/google-earth-browser-plugin/mGBMtHUU1FM - Je voudrais maintenant suggérer d'utiliser le earth-api-utility-library [http://code.google.com/p/earth-api-utility-library/wiki/GEarthExtensionsViewReference – Fraser