PILOTER GOOGLEEARTH AVEC SES API

Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009 - 23 oct. 2006 à 19:14
cpa76 Messages postés 2 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 21 février 2013 - 21 févr. 2013 à 11:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40043-piloter-googleearth-avec-ses-api

cpa76 Messages postés 2 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 21 février 2013
21 févr. 2013 à 11:10
Bonjour,

merci de ta réponse,
Google encourage d’utiliser son pluging Java depuis 2008. Ils ne font aucune évolution de leur API COM.
http://googlegeodevelopers.blogspot.fr/2010/08/sunset-for-google-earth-com-api.html.
Alors je ne sais pas si cela vaut le coup de leur rapporter leur bug.

a+
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
20 févr. 2013 à 23:13
Google Earth 6.1.0.5001 ca marche encore sous windows7 64 bits (mais GE est en 32 bits)

Google Earth 7.0.2.8415 effectivement GetFeatureByName me donne une Erreur d'execution. Bug ... mais a qui reporté ? monsieur google
cpa76 Messages postés 2 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 21 février 2013
19 févr. 2013 à 14:15
Bonjour,

J'ai fait comme vous quand j'étais sous XP Pro 32 bits et GoogleEart 4.
Tout fonctionnait bien.
Mais maintenant avec windows7 64 bits et GoogleEarth 7.0.2.8415. J'ai une exception qui est soulevé (exception non spécifié) sur la méthode GetFeatureByName.

Quelqu'un a-t-il rencontré ce problème ?
Et comment le résoudre ?
merci d'avance pour vos réponse.
cordialement
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
10 mai 2007 à 16:41
J'ai essayé de rajouter une fonction pour sauver un feature dans un fichier KML.
C'est une grosse béquille en attendant mieux.

Merci à RENFIELD pour son code

http://www.vbfrance.com/codes/SENDKEYSEX-SIMULER-TOUCHE-DANS-FENETRE-PRECISE_41974.aspx

que j'ai réutilisé dans cette fonction
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
25 avril 2007 à 14:57
Un nouvel exemple avec GetLayersDatabases.
Je poste cette exemple n'ayant pas trouvé sur le web ce genre de chose. Sachant que ce n'est pas ce que je voulais faire au départ :

Vous avez peut-être vu que dans Google Earth au lendemain des élections on peut (pouvait) voir les résultats de l'élection présidentielle par département/commune etc. Je voulais voir si il était possible de me balader automatiquement dans toutes les références histoire de récupérer en automatique les résulats par commune (par exemple pour voir à quoi resemblai la commune de ceux qui votent certains candidats et si elle ressemblai à ce que l'on pouvait attendre de ce genre d'endroit ... bon la je m'égare .... ca devient de la politique plus du code VB. Donc j'ai commnecé par ça ...

'fonction pour récupérér un feature GE depuis la base de données primaire
Private Sub Command5_Click()
Dim Indice As Long
Dim GEI As ApplicationGE
Dim Feat As FeatureGE
Dim Child As FeatureCollectionGE
Dim CameraInfo As CameraInfoGE


Set GEI = CreateObject("GoogleEarth.ApplicationGE")

'Attente que GoogleEarth soit initialisé
While (GEI.IsInitialized = 0)
DoEvents
Wend

'Racine du layersdatabase
'Debug.Print GEI.GetLayersDatabases.Count
'Debug.Print GEI.GetLayersDatabases.Item(1).Name
'Récupère les enfants
Set Child = GEI.GetLayersDatabases.Item(1).GetChildren
For Indice = 1 To Child.Count
'Si elle a une vue et si c'est bien ce qui m'intéresse on y va
Debug.Print Child.Item(Indice).Name
If Child.Item(Indice).HasView And InStr(Child.Item(Indice).Name, "Élection présidentielle France 2007") Then
Call GEI.SetFeatureView(Child.Item(Indice), 5)
End If
Next Indice

End Sub


Mais j'arrive toujours sur le premier feature c'est à dire celui de la france. Bon au final j'ai utilisé une autre solution en passant directement par les pages web donnant les mêmes infos. (au passage merci à NIX pour sa source sur la récupération de page par winsock qui m'a été super utile) et pour mes résulats j'ai eu la confirmation de ce que je pensais : moi j'irai pas habiter à Veney beaucoup trop tranquille comme coin ...
adirat Messages postés 2 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 19 décembre 2006
19 déc. 2006 à 16:09
Eh be je me répond à moi même vu que ça peut intéresser des vieux comme moi, qu'on pas l'habitude de saloper le boulot , arf arf arf .. Bon et bien je dis bravo les p'tits gars: pas de soucis à se faire pour la redistribution , c'est simple pour le déploiement : oubliez GE: il suffit qu'il soit sur le poste et GO!! evidemment si l'API change au cours du temps.. god bless you. mais ça on a l'habitude !
adirat Messages postés 2 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 19 décembre 2006
19 déc. 2006 à 09:23
la référence type library "earth 1.0" pointe directement sur l'exe (et pas une bibliothèque .tlb . Donc comment préparer le package de distribution d'un prog organisé comme ça ? Qq'un a pensé au déploiement ? Pas de probème en vue? Et si GE est installé dans un autre répertoire que celui par défaut ? ça marche quand même? J'ai un p'tit doute là ! Mais c'est super quand même!
fredoj Messages postés 25 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 5 novembre 2006 1
5 nov. 2006 à 17:41
Bien le bonjour,
c'est juste pour dire que je trouve cela excellent lol Merci.
Bonne prog à tous.
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
3 nov. 2006 à 15:01
A ce propos j'ai regardé mon exemple 3 ne marche plus ... petite modif il faut maintenant écrire en version 4.0.2416

'Exemple de récupération de coordonnées de point et d'altitude
Private Sub Command3_Click()
Dim GEI As ApplicationGE

Dim PointOnTerrain As PointOnTerrainGE

Dim PositionCherché(2) As Double
Dim Repeat As Integer
Dim Epsilon As Double
Dim LongDiff As Double
Dim LatDiff As Double

'Initialisation
Epsilon = 0.0005

'Coordonnées du mont Blanc
PositionCherché(0) = 45.8325541
PositionCherché(1) = 6.86437217

Set GEI = CreateObject("GoogleEarth.ApplicationGE")

'Attente que GoogleEarth soit initialisé
While (GEI.IsInitialized = 0)
DoEvents
Wend


'Fixe le mode Elevation à 1 ( Activation relief)
GEI.ElevationExaggeration = 1 'Si différent de 0, alors coords[2] est fixée à la vraie altitude du terrain.


'Récupération de données de point centre écran les
Do
'Positionne la caméra sur le Mont Blanc (La vitesse est fixé à 5 = Maxi donc pas d'effet de transition
Call GEI.SetCameraParams(PositionCherché(0), PositionCherché(1), 0, RelativeToGroundAltitudeGE, 100, 0, 0, 5)

Set PointOnTerrain = GEI.GetPointOnTerrainFromScreenCoords(0, 0)
'Attente que le processus de striming soit terminé sur la zone concerné
While (GEI.StreamingProgressPercentage < 100)
DoEvents
Wend
LongDiff = Abs(PositionCherché(1) - PointOnTerrain.Longitude)
LatDiff = Abs(PositionCherché(0) - PointOnTerrain.Latitude)
Repeat = Repeat + 1
'Controle que la position est bien celle demandée. Repeeat permet déviter de blocquer la procédure
'avec une limite à 100 itérations
Loop While (LongDiff > Epsilon Or LatDiff > Epsilon Or PointOnTerrain.Altitude < 0) And Repeat < 100

MsgBox "Altitude Mont Blanc dans GoogleEarth " & PointOnTerrain.Altitude

End Sub

Pas grand chose de nouveau a part ça on va attendre la mise à jour de la doc
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
3 nov. 2006 à 14:44
De rien, ca ma permis de voir que ma version n'était plus à jour. De plus avec la version 4.0.2416 (beta) la possibilité de créer des polygones et des trajets est maintenant dans la version de base gratuite Y a plus qu'a attendre qu'ils mettent à jour l'API et ce sera parfait ..
cs_mak10 Messages postés 18 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 3 novembre 2006
3 nov. 2006 à 13:57
merci, c'est bien la version qui est a l'origine du probleme et j'etais a la version 4.0.15xx (beta) de juin 2006.
avec la version actuelle 4.0.2416 (beta) d'octobre 2006, ca marche tres bien. Merci
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
3 nov. 2006 à 13:05
Je pense que cela peut venir de la version de googleearth que tu utilises:

Pour ma part : 4.0.2091 (Beta) je ne pense pas que l'api existait avant la version 4.0 . Met à jour ta version si tu n'es pas dans ce cas là . Sinon : "Nous ne voyons pas d'autre explication"
cs_mak10 Messages postés 18 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 3 novembre 2006
3 nov. 2006 à 12:54
bonjour et merci pour ce code. mais j'ai un probleme a le faire fonctionner . meme avec la reference a jouté dans les references du projet, il y a une erreur de ref inconnu dans l'excecution du code et il s'arrete a la premiere ligne de : GEI as ApplicationGE.

merci de vos conseils.
fredoj Messages postés 25 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 5 novembre 2006 1
25 oct. 2006 à 23:23
Oki merci autant pour moi Renfield j'avais pas bien lu lol.
Bonne soiree, je vais le faire tourner de ce pas j'avais pas eu le temps non plus de me pencher sur cet api c'est du travail maché merci cuq.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 oct. 2006 à 22:29
Zip testé et OK (Winrar)

"Le Zip contient uniquement le fichier KML Exemple.

Pour les Grand débutant : pour que la source fonctionne ne pas oublié de rajouter dans Projet / Références / "Earth 1.0 type library" Voir copie écran."
fredoj Messages postés 25 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 5 novembre 2006 1
25 oct. 2006 à 22:24
Bonkour,
j'ai téléchargé le Zip et il n'y a pas la source je ne comprends pas tres bien. Je n'ai que geneve.kml "@Source telecharge depuis ce lien" et @Readme-CodeS-SourceS-FR.txt. J'ai essayé avec winrar et 7Zip. Si cela vient de moi merci de me prévenir.
Bonne prog à tous.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 oct. 2006 à 10:50
tu utilises '+' ce qui est discutable...

mais surtout, tu effectue multes concaténations

KMLData = KMLData + ...
KMLData = KMLData + ...
KMLData = KMLData + ...

ce qui fais réallouer l'espace, déplacer la chaine existente, maintes fois, inutilement
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
24 oct. 2006 à 10:44
Eu c'est quoi le problème avec mes concaténations ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 oct. 2006 à 09:41
gaffe a tes concaténations :

KMLData = "<?xml version=""1.0"" encoding=""UTF-8""?>" & _
"<kml xmlns=""http://earth.google.com/kml/2.1"">" & _
"" & _
"<name>Le Jet d'eau Genève</name>" & _
"<LookAt>" & _
"<longitude>6.156182706892176</longitude>" & _
"<latitude>46.20746317320977</latitude>" & _
"0" & _
"<range>316.3662914479763</range>" & _
"<tilt>0</tilt>" & _
"<heading>6.199453434125936</heading>" & _
"</LookAt>" & _
"" & _
"<coordinates>6.156019183879536,46.20743386584116,0</coordinates>" & _
"

" & _
"

" & _
"</kml>"
Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009
23 oct. 2006 à 19:14
Génial, exactement le genre de choses que je voulais faire mais je n'avais pas encore eu le temps de regarder de près les API. Maintenant je sais que c'est possible ;)
Merci pour cette petite source qui me sera bien utile !