DELPHI GOOGLE MAP GPS TOOL

HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 6 janvier 2011 - 9 juil. 2008 à 20:21
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011 - 2 déc. 2008 à 19:07
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/47244-delphi-google-map-gps-tool

aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
2 déc. 2008 à 19:07
bonjour
tout d abord il faux comprendre le principe de fonctionnement de ce petit programme ,
le programme va écrire un fichier texte tous simplement qui contiendrai du code HTML ,le texte est le même pour seul variable la l'altitude et la longitude et le type de la carte ,
le fichier texte est sauvegarder sous le nom BAGMaps avec extension HTML
il suffit de le nommer nom_fichier.Html pour que ce fichier soit considérai comme un fichier Html que l'on peut le naviguer (internet explorer vas exécute le contenu )
et le déroulement du programme vas écraser l'ancien fichier et écrire un autre nouveau a la place de l'ancien et le naviguer
pour TEMP_FILE_NAME = '\BAGMaps.html' c'est juste une adresse au hasard que j'ai choisi si tu a l'adresse suivant C:/BAGMaps.html alors ta exécuter ton programme dans le disque C:
et si il est exécuter dans le D: tu aura D:/BAGMaps.html
@+
jeanjeandada Messages postés 152 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 20 novembre 2011
2 déc. 2008 à 15:30
Bonjour tout le monde,
ME revoilà d'attaque ^^
Je pense que j'ai trouvé la source de l'erreur :
Dans le code on déclare une constante :

const
TEMP_FILE_NAME = '\BAGMaps.html';

La question est la suivante : A quoi sert le répertoire "file:///C:/BAGMaps.html" et que met on dedans ??
Sincère salutation !
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
20 nov. 2008 à 15:42
Bonjour,
Une petite question : Est-ce que le programme mis ici par AMINEDELPHI fonctionne sans modification sur ta configuration?

Si oui je pense qu'il faut que tu examines en détail le code HTML que tu génères dans CodeHTML, ainsi que la séquence associée au clic du bouton (création du code html, génération d'un fichier comprenant ce code, lancement du TWebBrowser sur ce fichier)
jeanjeandada Messages postés 152 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 20 novembre 2011
20 nov. 2008 à 14:54
Ma page Web où j'ai la clé de google map est vide c.a.d. qu'elle ne comporte aucun script. Est ce que cela aurait une importance ?
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
19 nov. 2008 à 12:49
Bonjour
j'ai Firefox par défaut.. Et je me connecte sans Key
Est ça cause pas de problème c’est autre chose
@+
jeanjeandada Messages postés 152 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 20 novembre 2011
19 nov. 2008 à 09:39
Oups j'ai oublié de dire que j'ai installé IE7 mais peut etre que Delphi charge la page sur Firefox par défaut..
jeanjeandada Messages postés 152 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 20 novembre 2011
19 nov. 2008 à 09:36
Bonjour tout le monde,

Voilà aprés avoir mis la propriété Silent à True, de TwebBrowser, d'avoir remplacer 'mykey ' par ma clé, j'ai tjrs l'erreur de "Violation d'accés ....."

voici le code avec ma clé :
CodeHTML := '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"'
+'"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'#13
+'<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">'#13
+'<head>'#13
+'<meta http-equiv="content-type" content="text/html; charset=utf-8"/>'#13
+'<title>Google Maps JavaScript API Example: Simple Map</title>'#13
+'<script src="http://maps.google.com/maps?file=api&v=2&key='+ 'ABQIAAAAqHhhNK50RxB906fs404HgxQk6pxkT65eygJqsrDDJPRIXJfc3hQZBgWpL0CDxM_stTHvCLo8MAOjdA' +'"'#13

Est ce que qq1 pourrai essayer chez lui ma clé et me retourne le résultat.
(Sur la fiche j'ai seulement laisser le bouton "Genereted HTML" avec le Twebbrowser. Dans le code j'ai supprimé tout ce qui n'était pas en relation avec twebbrowser...: normalement tout est correct niveau code)

Merci des aides !
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
16 nov. 2008 à 16:01
Bonjour
Pierre ça fait plaisir de te revoir et tout les autre aussi
@+
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
16 nov. 2008 à 09:49
Bonjour JEANJEANDADA,
Si ton code est exactement celui que tu as donné le problème provient probablement d'un refus de la connexion par Google.Pour utiliser l'API Google tu dois être inscrit et poséder une clef d'accès (voir http://code.google.com/apis/maps/signup.html)

Cette clef doit être indiquée dans l'appel du script. Par exemple :
+ '<script src="http://maps.google.com/maps?file=api&v=2&key=' + mykey + '"'#13

Dans laquelle mykey est une variable string dans laquelle tu auras rentré la clef fournie par Google lors de ton inscription.
Cordialement.
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
15 nov. 2008 à 17:50
Bonjour
si ta copier le code a l'identique et que ça bloque alors vois avec le WebBrowser1 si la propriétés Silent est a True
car il pose des problèmes des fois mais avec internet explorer 7 ca pose pas de problèmes
@+
jeanjeandada Messages postés 152 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 20 novembre 2011
14 nov. 2008 à 11:49
Chapeau .... les gars !!!!!! Bravo.
J'ai essayé de reprendre le code du projet pour me le mettre dans un autre de mes projet pour le modifier selon mes envie. Mon projet se compile mais lorsque sur un des boutons il affiche un message d'erreur:
"Violation d'accés à l'adresse 0048887E dans le module 'Project1.exe'. Lecture de l'adresse 000000000"
Je pense que le problème vient de morceaux de code :

+'<meta http-equiv="content-type" content="text/html; charset=utf-8"/>'#13
+'<title>Google Maps JavaScript API Example: Simple Map</title>'#13
+'<script src="http://maps.google.com/maps?file=api&v=2&'#13

Mais je ne sais quoi faire pour y remédier !!
Merci par avance de bien m'expliquer pq
merci!
elkhlifiyoussef Messages postés 1 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 18 août 2008
18 août 2008 à 11:25
bonjour Saima,
j'esper t a resolu ton probleme ,benh moi je peus pas t'aider dans ce baigne de delfi.. mais juste pour te dire bon courage .
allez a+.
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
7 août 2008 à 17:42
Bonjour Saima,
Pour ta première question: En fait c'est Toi qui spécifie à Google les coordonnées de la carte à afficher. Google n'a aucun moyen de connaitre ta position géographique (pour cela il faudrait que tu soit équipé d'un émetteur type GPS et que Google vienne l'interroger.). Par contre si tu connais tes coordonnées (longitude et latitude) tu peux soit demander que la carte affichée soit centrée sur ce point, soit ajouter un marqueur à cet emplacement.
Pour ta deuxiéme question: Google propose différents type d'affichage (carte, satellite ..) plus ou moins détaillés selon les emplacements. Les divisions administratives ne sont effectivement pas toujours indiquées. Par contre il est possible de rajouter sur les cartes Google des informations provenant d'autres sources. Mais je pense que pour cela il vaut mieux que tu t'adresses à un forum GoogleMap ou OpenLayers, plutot qu'à une discussion Delphi. Le sujet est en effet assez vaste et complexe. (Nota: j'ai cité OpenLayers car, à mon avis, il offre des possibilités plus "fines" que Google et permet, en autre, de récupérer des couches Google)
Amitiés.
saima ben hadj Messages postés 2 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 7 août 2008
7 août 2008 à 14:48
salut à tous,
au fait j'ai deux questions consernant l'utilisation de l'API Google Maps:
la première est : peut on récuperer l'adresse ou les coordonnées sur la carte de la machine connectée?
et la deuxième est : est ce qu'on peut décomposer la carte d'un pays en des gouvernera ça veut dire afficher les limites de chaque gouvernera.
merci pour votre aide
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
6 août 2008 à 00:52
Bonsoir à toutes et à tous,

Juste un petit conseil pour celles et ceux qui veulent "jouer" avec l'API GoogleMap.
Au lieu d'insérer tout le code du script dans CodeHTML, créé un fichier par exemple MonGoogle.js qui sera de format texte et dans lequel vous pourrez écrire directement le script en Javascript. Et dans codeHTML vous remplacez toute la partie script par:

+ '<script src="MonGoogle.js" type="text/javascript"></script>'#13

Bien sur le fichier MonGoogle.js doit se trouver dans le répertoire de votre exécutable.

Ceci vous permet de modifier le script, de tester d'autres fonctions de GoogleMap sans avoir à modifier le source du programme Delphi et le recompiler.

Bonne soirée
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
29 juil. 2008 à 21:16
Bonsoir SAIMA,
Avec l'API GoogleMap il existe deux possibilités (peut-être y en a-t-il d'autres?) qui peuvent t'aider pour ton besoin:

La premiére est la possibilité de définir des icons en tant que marqueur. Il te suffit d'avoir des icones représentant les chiffres.

La deuxième est la possibilité de définir ses propres controles, qui peuvent être textuel, et donc des chiffres, que tu pourras placer sur la map.

Je te conseille de consulter la doc API Google sur leur site, et en particulier les paragraphes 'Custom Map Controls' et 'Custom Icon'

Amitiés
saima ben hadj Messages postés 2 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 7 août 2008
29 juil. 2008 à 16:04
salut, je suis entrain de devéloppée un projet utilisant l'api google maps. je veut ajouter des nombres à la carte sans que ces nombres soient affichés sur un marqueur. quelqu'un peut m'aider. merci
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
25 juil. 2008 à 20:56
Bonjour,

Pour ma part J'ai intégré dans le WebBrowser des champs permettant de récupéréer la position du curseur et celle du marqueur:

+ '<form action="" name="coord_G" id="coord_G" style="margin-top: 10px;">'#13
+ 'Longitude :
'#13
+ 'Latitude :

'#13
+ ' Marqueur Longitude :
'#13
+ 'Latitude :
'#13
+ '</form>'#13
+ '
'#13
+ '

'#13

et associé l'évènement 'drag' du marqueur pour maintenir à jour ces :

+ 'GEvent.addListener(marker, "drag", function(){'#13
+ 'var pointM = new GLatLng;'#13
+ 'pointM = marker.getLatLng();'#13
+ 'document.coord_G.M_long.value = pointM.lng();'#13
+ 'document.coord_G.M_lat.value = pointM.lat();'#13
+ '});'#13

Dans le programme Delphi il suffit d'un bouton avec le code suivant pour récupérer directement les coordonnées finales du marqueur:

procedure TPOIForm.RecupClick(Sender: TObject);
begin
Latitude.Text := GoogleBrowser.MapGoogle.MapBrowser.OleObject.Document.coord_G.M_lat.value;
Longitude.Text := GoogleBrowser.MapGoogle.MapBrowser.OleObject.Document.coord_G.M_long.value;

end;

Nota: j'utilise l'accès GoogleMap dans une unité indépendante avec sa propre fenêtre et son composant TwebBrowser (unité: GoogleBrowser, Form: MapGoogle, TWebBrowser: MapBrowser)


J'utilise ce type de fonctionnement pour visualiser des POI GPS ainsi que les points géographiques issues de bases de données. Au lancement je centre la carte Google sur les coordonnées en ma possession et affiche un marqueur sur ce point. Le déplacement de ce marqueur et la récupération de ses coordonnées me permettent d'affiner les coordonnées.

Je me suis contenté de donner quelques réponses dans cette discussion, et je n'ai pas mis cette application en ligne car elle nécessite une base de données Oracle et des composants optimisant l'accès Oracle et non livrés en standard.

Amitiés
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
25 juil. 2008 à 15:39
Salut,

source atypique et interessante.

Il manque une certaine interactivité entre le WebBrowswr et les compos de control: actualiser par exemple la longitude dans le TEdit à chaque fois que l' on se déplace sur la carte. Pour cela, il te faut récupérer le code HTML généré:

uses MSHTML_TLB;

var
document: IHTMLDocument2;
begin
Document := WebBrowser1.Document as IHTMLDocument2;
MemSrc.Lines.Text := Document.Body.innerHTML;

Ensuite, il ne reste plus qu' à récupérer les données necessaires.

A+
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
20 juil. 2008 à 17:18
Bonjour,

AMINEDELPHI, pour la reconstitution du puzzle je te conseille de lire la documentation Google. Voici le lien pour l'explication des 'tiles':
http://code.google.com/apis/maps/documentation/overlays.html#Tile_Overlays

Bon courage, mais si en final c'est juste pour réassembler les 'tiles' du puzzle tu as intéret à faire une copie de la partie d'écran concernée!

AHMED12, tu peux même rendre dynamique le dimensionnement de la carte et faire apparaitre des ascenseurs horizontal et vertical si tu dépasse la taille du WebBrowser.
Pour un exemple, tu peux essayer ça:

Mettre un bouton dans la page HTML, par exemple avant + '
'#13

Ceci crée un bouton qui lance la function functionlarge en cliquant dessus

Dans la partie script de CodeHTML, avant + '</script>'#13
tu rajoutes la fonction functionlarge (la variable t_largeur sert juste à faire du flip-flop entre les dimensions :

+ 't_largeur = 512;'#13
+ 'function functionlarge() {'#13
+ 'if (t_largeur == 512) {'#13
+ ' document.getElementById("map_canvas").style.width = "1000px";'#13
+ ' document.getElementById("map_canvas").style.height = "800px";'#13
+ ' t_largeur = 1000;'#13
+ '}'#13
+ 'else {'#13
+ 'document.getElementById("map_canvas").style.width = "512px";'#13
+ 'document.getElementById("map_canvas").style.height = "512px";'#13
+ 't_largeur = 512;'#13
+ '}'#13
+ ' }'#13

Ce petit exemple montre comment récupérer et modifier dynamiquement les caractéristiques d'un objet de la page HTML.

Amicalement
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
20 juil. 2008 à 16:22
Bonjour
Génial Ahmed comment a tu trouver ça le 100%px
Il reste maintenant que la reconstitution du puzzle
A+
cs_ahmed12 Messages postés 83 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 9 décembre 2010
20 juil. 2008 à 12:43
bonjour
merci pierrefo
le faite mon objectif c'été de faire agrandir et éclater la map dans la canavas et j'ai essaie dans le codeHTML ca et sa marche bien:

+ '

'#13
bon courage
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
19 juil. 2008 à 19:11
Bonjour Ahmed,

Cette flèche à gauche n'est pas un composant de Google Map. C'est un simple outil de gestion de HTML dynamique qui masque la partie gauche (résultat des recherches) et agrandit la zone attribuée à la carte.

Dans le code de cet exemple, ceci revient à recharger la carte après avoir modifié, dans CodeHTML les dimensions affectées à map_canvas :
+ '

'#13

Tu peux essayer de lancer l'affichage de la carte après avoir modifié ce code, par exemple:
+ '

'#13

Lors de la création de l'élément GMap tu lui indique où elle sera visualisée:
+ 'map = new GMap2(document.getElementById("map_canvas"));'#13
et l'image crée tient compte des dimensions de la zone.

Tu peux donc ajouter dans ta page HTML tout élément dont l'activation par un clic lancera une fonction javascript qui modifiera la position ou la dimension de la zone affectée à l'image. Mais il s'agit là d'HTML Dynamique et de JavaScript beaucoup plus que de Delphi.

Cordialement
cs_ahmed12 Messages postés 83 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 9 décembre 2010
19 juil. 2008 à 10:46
Bonjour pierrefo

La flèche que je veux faire apparaître elle est afficher en petit sur la gauche de la map.

voir ce lien http://maps.google.com/maps'hl=fr&tab=wl

merci d'avance
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
18 juil. 2008 à 20:55
Bonsoir,

Non il n'y a pas une image dans le webbrowser mais un ensemble de petites images (les 'tiles' de Google) qui positionnées cote à cote ou l'une en dessous de l'autre donnent la vue complète de la carte. D'ailleurs très souvent selon la charge du réseau, du serveur ou de ton PC tu pourras constater que l'affichage s'effectue par carré.

Par conséquent soit tu récupères toutes les petites images et reconstitue toi-même la carte globale, soit tu profites de l'assemblage réalisé à l'écran et effectues une copie d'écran. La reconstitution se fait par le positionnement des tiles élémentaires mais il n'y a pas une image complète reconstituée dans le webbrowser.

Bonne soirée
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
18 juil. 2008 à 10:39
bonjour,
avec ces deux commande le presse papier contien toutes les images
// Sélectionner tout
webbrowser1.ExecWB(OLECMDID_SELECTALL , OLECMDEXECOPT_DODEFAULT);
// Copier
Webbrowser1.ExecWB(OLECMDID_COPY , OLECMDEXECOPT_DODEFAULT);

ce qui permat de les mettres dans word dans le désordre.

Par contre il doit bien y avoir une image de créée dans webrowser pour afficher l'ennsemble des images.
C'est pour comprndre le cheminement des données.


Salutations
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
17 juil. 2008 à 15:16
Bonjour YVESSIMON,

Je pense qu'il faut que tu précises ce que tu veux récupérer. En effet Google ne renvoie pas 1 image mais un ensemble de 'tile' qui, misent cote à cote, constitue l'image que tu vois. (cf. la documentation de l'API Google). Ce sont donc l'ensemble de ces 'tiles', chaque 'tile' constituant une image qui se trouve dans le TWebBrowser. A titre d'exemple, mets sur la Form1 un bouton et un Tedit (appelé nbimage) et sur le clic du bouton tu mets le code :

nbimage.Text := inttostr(WebBrowser1.OleObject.Document.Images.Length);

Tu vas récupérer le nombre d'images dans le TWebBrowser qui dépend du type de visualisation (dans l'exemple de ce programme moi j'en récupère 44 en mode plan et 76 en mode mixte).

Si ton objectif est de simplement récupérer une image, la technique utilisée par AMINEDELPHI dans Button2Click est sans doute la plus simple (du type copie d'une zone d'écran). C'est plus simple que de récupérer 44 images et de les réassembler.

Si dans le code HTML soumis au TWebBrowser tu rajoutes certains composants (boutons, imput ...) il suffit d'ajuster les coordonnées du rectangle dans:

GetScreenBitmap(rect(form1.Left + 13, form1.Top + 44, 512, 512), map);

Remplacer +13 et +44 pour ne recopier que la map en fonction de sa position.

Salutations
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
17 juil. 2008 à 12:03
Bonjour,
A l'adresse
http://www.developpez.com/delphi/faq/?page=webrowser#webpropimages
on trouve comment récupérer les liens de chcunes des images.

ceci permet de récuperer des images propres.

par contre l'image est bien dans le PC comment la récuperer ?


Salutations
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
17 juil. 2008 à 11:20
Bonjour Yves,

Oui c'est bien dans CodeHTML qu'il faut ajouter les lignes correspondantes. Par exemple:

+ 'GEvent.addListener(map, "mouseover", function(){'#13
+ 'map.showControls();'#13
+ '});'#13
+ 'GEvent.addListener(map, "mouseout", function(){'#13
+ 'map.hideControls();'#13
+ '});'#13

Concernant l'image si tu regardes la partie HTML dans CodeHTML une définition de
appelée map_canvas :

+ '

'#13

C'est là que se trouve la map retournée par Google (voir aussi dans la partie script de CodeHTML la définition de l'objet map :

+ 'map = new GMap2(document.getElementById("map_canvas"));'#13

Salutations
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
17 juil. 2008 à 10:16
Bonjour,

Je suis perdu !

Ou doit-on mettre GEvent.addListener ...
dans le string CodeHTML ?

car dans WebBrowser1 je ne vois pas d'événement mouseover !

par contre il doit bien y avoir y image de créée dans WebBrowser1.
Salutations
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
16 juil. 2008 à 19:40
Bonsoir YVESSIMON,

Une petite idée si tu veux récupérer l'image sans les controles.

Il suffit de ne faire apparaitre les controles que lorsque le curseur de la souris est sur la map et de les masquer dès qu'elle sort. Pour ça tu rajoutes les commandes suivantes sur les évènements mouseover et mouseout :

////'mouseover' listener shows controls

GEvent.addListener(map, "mouseover", function(){
map.showControls();
});

////'mouseout' listener hides controls

GEvent.addListener(map, "mouseout", function(){
map.hideControls();
});

Mais je pense finalement que ces infos relèvent plus d'un site sur Google que sur Delphi, bien qu'on puisse être adepte des deux! Qu'en pense notre modérateur ou administrateur?

Amitiés
Pierre
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
16 juil. 2008 à 19:16
Bonsoir Ahmed,
De quelle flèche veux-tu parler?
Voici les principaux controles que je connais:

GSmallMapControl() :Creates a control with buttons to pan in four directions, and zoom in and zoom out.

GLargeMapControl() : Creates a control with buttons to pan in four directions, and zoom in and zoom out, and a zoom slider.

GSmallZoomControl() : Creates a control with buttons to zoom in and zoom out.

GScaleControl() : Creates a control that displays the map scale.

GMapTypeControl() : Creates a control with buttons to switch between map types.

GOverviewMapControl() : Creates a collapsible overview mini-map in the corner of the main map for reference location and navigation (through dragging). The GOverviewMapControl creates an overview map with a one-pixel black border.

Pour les utiliser il suffit d'ajouter dans CodeHTML la création du controle du type :

+ 'map.addControl(new GScaleControl());'#13

Pour ceux qui souhaitent voir des exemples de mise en oeuvre de l'API Google, voici, outre le site Google, un site assez complet en exemples:
http://econym.googlepages.com/index.htm

Salutations
cs_ahmed12 Messages postés 83 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 9 décembre 2010
16 juil. 2008 à 12:40
merci pierrefo pour la réponse rapide.

je voudrai aussi savoir comment afficher la flache qui fait agrandir la map sur la page web.

merci pour toutes et tous.
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
16 juil. 2008 à 12:11
Bonjour LAURENTGIRARD,

Je n'ai pas regardé la possibilité de visualiser une info bulle par un click. Par contre j'ai réalisé la visualisation d'un curseur (initialement positionné au centre de la carte). Ce curseur peut être déplacé à l'aide de la souris et en fin de déplacement il affiche les coordonnées de la nouvelle position du curseur. Voici la partie script que j'utilise dans CodeHTML si ca peut te donner des idées (l'API Google est assez complète):

+ '<script type="text/javascript">'#13
+ 'function initialize() {'#13
+ 'centreG = new GLatLng;'#13
+ 'centreM = new GLatLng;'#13
+ 'if (GBrowserIsCompatible()) {'#13
+ 'map = new GMap2(document.getElementById("map_canvas"));'#13
+ 'centreG1 = new GLatLng(' + Latitude.Text + ',' + Longitude.Text + ');'#13
+ 'map.setCenter(centreG1,' + inttostr(Zoom.ItemIndex) + ',' + 'G_' + MapType.Text + '_MAP' + ');'#13
+ 'map.addControl(new GLargeMapControl());'#13
+ 'map.addControl(new GMapTypeControl());'#13
+ 'map.addControl(new GScaleControl());'#13
+ 'map.addControl(new GOverviewMapControl());'#13
+ 'var marker = new GMarker(centreG1, {draggable: true});'#13
+ 'GEvent.addListener(marker, "dragstart", function() {'#13
+ 'map.closeInfoWindow();'#13
+ ' });'#13
+ 'GEvent.addListener(marker, "dragend", function() {'#13
+ 'centreM = marker.getLatLng();'#13
+ 'marker.openInfoWindowHtml("Longitude = "+centreM.lng()+"
Latitude = "+centreM.lat());'#13
+ ' });'#13
+ 'map.addOverlay(marker);'#13
+ 'functioncentre();'#13
+ ' }'#13
+ ' }'#13
+ 'function functioncentre() {'#13
+ 'centreG = map.getCenter();'#13
+ 'document.coord_G.G_long.value = centreG.lng();'#13
+ 'document.coord_G.G_lat.value = centreG.lat();'#13
+ ' }'#13
+ '</script>'#13

Salutations
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
16 juil. 2008 à 11:33
Bonjour,

Fonctionne très bien malgrés mon accès au réseau pertubé.

Mais ou est l'image dans WebBrowser1 ?

Salutations
laurentgirard Messages postés 4 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 16 juillet 2008
16 juil. 2008 à 10:40
Bonjour,

Félicitations pour cet exemple d'utilisation des API Google Map !

Sans vouloir abuser, savez vous comment faire apparaitre une info bulle lors d'un click sur un point de la carto ?

Merci par avance, et bonne journée à tous.
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
16 juil. 2008 à 10:29
Bonjour AHMED12,

Pour visualiser le rectangle permettant de se déplacer dans la région il faut ajouter dans CodeHTML la commande suivante après le map.setcenter :

+ 'map.addControl(new GOverviewMapControl());'#13

Bonne journée à toutes et tous
cs_ahmed12 Messages postés 83 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 9 décembre 2010
16 juil. 2008 à 09:47
bonjour

Je vaudrais afficher l'aperçu ou le serf qui ce trouve en bas de la map dans un rectangle comme dans le site google map qui facilite la navigation dans une map.
Est ce que quelqu'un connais comment rajouter cette fonction dans le code html
Merci d'avance
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
15 juil. 2008 à 18:34
bonjour
le code source a été modifier un peu en ajoutant quelque animation
--pas Besoin du Key ça marche !!?
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
15 juil. 2008 à 16:59
NB : que la capture d'image et simplement un Imprime écran

le Key et toujour valide pour moi
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
15 juil. 2008 à 16:07
Bonjour,
Les composants Google étant intégrés à l'image envoyée je pense que la seule solution serait de regénérer la carte sans ces composants avant d'effectuer une sauvegarde.

Je profite de cette réponse pour préciser à ceux qui voudraient tester le code que j'ai posté pour récupérer les coordonnées du centre après déplacement, que j'ai modifié l'introduction de la clé individuelle fournie par Google. Dans le code initiale cette clé était visible à l'écran dans un Tedit appelé 'Key'. Personnellement je l'ai introduite dans une variable string intitulée 'mykey'. Donc soit vous remplacez dans mon code le +mykey par +key.txt (comme c'était dans la version d'origine), soit vous définissez une variable 'mykey' que vous initialisez avec votre clé.

Salutations
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
15 juil. 2008 à 14:42
Bonjour,
Depuis 14 heure 40mn il ne charge plus de carte ?

Salutations
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
15 juil. 2008 à 13:35
Bonjour ,
En modifiant le code html j'ai bien la possibilité de faire les zooms qui s'affiche.

Par contre l'image sauvegardée contient aussi les images des boutons du zoom.

Est-il possible de ne sauvegarder que l'image html ?

Merci
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
15 juil. 2008 à 03:05
Bonjour à toutes et à tous et Bonjour Pierre
Merci pour le conseille y a pas que le Key il y a aussi ou je crèche on zooment un peu plus .
Bon revenant a notre sujet
Au départ le but de ce petit programme été de me permettre d’avoir les cartes pour mon petit module GPS (Les Map) et les carte son payant alors il me faut des carte numériser et gratuite c’est pour ça que Delphi google Map fut créer .
Pour les bitmap (0,0) il appartienne a une matrice (n,n) c'est-à-dire pour un zoom donner je devez avoir tout la carte mais découper en petit morceau la matrice (n,n) représente le nom du petit morceau
Exemple pour le Zoom 2 on a 4 puissance 2 ce qui donne 16 morceau de carte de 256*256 Pixel (nombre d’image=4^Zoom) des petit fichier facile a charger dans une autre application off ligne (pour mon module GPS et Même pour PC)
Même google utilise cette technique en quelque sort pour leur piller leur map à leur méthode.
Pour des images plus grande 512 * 512 je devisais le zoom/2
C’est pour ça que les boutons optionnel de google Map ne figuré pas a l’aperçu
Pour le bouton Auto Capture il génère des altitudes et des longitudes pour me permettre d’avoir tout les petit image avec précision car tout les coordonner son le milieux de la page afficher Horizontalement et verticalement .
Exemple pour le zoom=2 (long Matrice ==4^Zoom/2=2=n) pour des image 512*512 Pixel
Long :-90° ,Lal :45° nom image(0,0);Long : 90° ,Lal :45° nom image(0,1)
Long :-90° ,Lal :-45° nom image(1,0);Long : 90° ,Lal:-45° nom image(1,1)
Resultat :
(0,0) (0,1)
(1,0) (1,1)
2 image Hor et 2 Ver (n,n)=(2,2)
For Free I Can En joy
Et les fichier matrice.text et Zoom.text me permeté de faire une pause des capture (une sauvegarde)
mais désolé ça na marche pas car Google map fais a ça tête !!!
en plus j’ai fait les calcule pour avoir tout la base de donner de google map il fallait
environ 800 siècle de téléchargement en continu et des centaine de Giga de stockage
car mon but s’été un Module GPS universelle un peu fous non .
mais j’ai trouver une autre méthode plus barbare mais pour la prochain fois.
une petit question es que quelqu’un connais comment on peux avoir l’affichage du TWebBrowser dans une image Merci à tous pour les commentaire chaleureux a+
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
14 juil. 2008 à 23:12
Bonsoir,

@ SYSTMD, Merci, c'est déjà fait cet après midi après une recherche sur Google et cela fonctionne.

10/10

@+,

Cincap
cs_systmd Messages postés 41 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 29 août 2012
14 juil. 2008 à 22:35
Bonsoir
@ aminedelphi : du trés bon boulot

@ cincap : si tu utilise les versions "perso" de delphi il faut installer l'active X du TWebBrowser.
Consulte la marche à suivre içi :
http://phidels.com/php/index.php3?page=../php/activex/acivexie4.htm&id=178&PHPSESSID=60b39beaa2b326fb8292d55e2738193e
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
14 juil. 2008 à 15:02
Re Bonjour,

Voilà j'ai rajouté dans le TWebBrowser un bouton et deux zones texte permettant, après déplacement de la carte d'obtenir les nouvelles coordonnées du centre.

Il suffit de modifier le CodeHTML et de mettre :

CodeHTML := '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"'
+'"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'#13
+'<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">'#13
+'<head>'#13
+'<meta http-equiv="content-type" content="text/html; charset=utf-8"/>'#13
+'<title>Google Maps JavaScript API Example: Simple Map</title>'#13
+'<script src="http://maps.google.com/maps?file=api&v=2&key='+ mykey+'"'#13
+'type="text/javascript"></script>'#13
+'<script type="text/javascript">'#13
+'function initialize() {'#13
+'centreG = new GLatLng;'#13
+'if (GBrowserIsCompatible()) {'#13
+'map = new GMap2(document.getElementById("map_canvas"));'#13
+'map.setCenter(new GLatLng('+Latitude.Text +','+ Longitude.Text +'),'+inttostr(Zoom.ItemIndex) + ','+'G_'+MapType.Text +'_MAP'+');'#13
+'map.addControl(new GLargeMapControl());'#13
+'map.addControl(new GMapTypeControl());'#13
+'map.addControl(new GScaleControl());'#13
+'functioncentre();'#13
+' }'#13
+' }'#13
+'function functioncentre() {'#13
+'centreG = map.getCenter();'#13
+'document.coord_G.G_long.value = centreG.lng();'#13
+'document.coord_G.G_lat.value = centreG.lat();'#13
+' }'#13
+'</script>'#13
+'</head>'#13
+''#13
+'
'#13
+'<form action="" name="geocoder_form" id="geocoder_form" style="margin-top: 10px;">'#13
+''#13
+'</form>
'#13
+'
'#13
+'<form action="" name="coord_G" id="coord_G" style="margin-top: 10px;">'#13
+'Longitude :
'#13
+'Latitude :
'#13
+'</form>'#13
+'
'#13
+'

'#13
+''#13
+'</html>'#13 ;


Ajout du bouton et des zones dans la partie du code HTML et adjonction dans le script de la fonction functioncentre() qui récupère les coordonnées et alimente des deux zones Latitude et Longitude.

Bonne journée à toutes et tous
Pierre
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
14 juil. 2008 à 12:59
Bonjour à toutes et à tous,

@ aminedelphi, Cela à l'air très bien mais pas moyen d'utiliser cette source, car le composant "TWebBrowser" manque avec mon Delphi 6.

Peus tu me dire ou télécharger cette vcl.

Merci,

@+,

Cincap
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
14 juil. 2008 à 11:34
Re Re ...

Au lieu d'utiliser des combobox pour l'échelle (zoom) et le type de carte, il est possible de se servir des fonctions incluses dans l'api Google et qui visualisent sur la carte un curseur d'échelle et des boutons de sélection de la visualisation.

Pour ça il suffit dans CodeHTML d'ajouter l'appel de ces fonctions après le 'map.setCenter' :

+'map.setCenter(new GLatLng('+Latitude.Text +','+ Longitude.Text +'),'+inttostr(Zoom.ItemIndex) + ','+'G_'+MapType.Text +'_MAP'+');'#13
+'map.addControl(new GLargeMapControl());'#13
+'map.addControl(new GMapTypeControl());'#13
+'map.addControl(new GScaleControl());'#13

Amicalement
Pierre
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
14 juil. 2008 à 10:18
Re Bonjour,

J'ai oublié deux points dans mon commentaire précédent.

1- J'ai moi-même réalisé une page .html avec script me permettant de faire une recherche à partir d'une adresse et de visualiser la carte Google et la carte ViaMichelin (l'API est aussi disponible). Je peux ensuite me déplacer sur l'une ou l'autre des cartes puis les re-synchroniser et récupérer les coordonnées. Ce code n'a pas sa place ici puisqu'il ne s'agit pas de Delphi mais si ca peut vous donner des idées je peux vous l'envoyer par e-mail.

2- Je vous conseille d'éviter de mettre votre 'KEY' dans le code source posté. Certains ne prennent pas la peine de s'enregistrer, même si c'est gratuit, et utilisent votre propre code. Vous risquez alors de voir votre compte bloqué. Je vous donne ce conseil car ça m'est arrivé!!

Bonne journée
Pierre
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
14 juil. 2008 à 09:46
Bonjour,

Toutes mes félicitations.
Je n'ai pas encore eu le temps de regarder votre source en détail, mais je vais le faire.
Pour moi, au premier abord, juste un petit problème: lors d'une capture d'image celle-ci est toujours nommée (0,0).bmp Je suppose que vous vouliez mettre les coordonnées (peut être un problème de séparateur décimal?)
Une petite idée de fonction complémentaire (à moins que je ne l'ai pas vu!). Comme il est possible de déplacer la carte dans la fenêtre Google, il serait bien de pouvoir récupérer les nouvelles coordonnées après déplacement. Ceci permettrait, par exemple, de se positionner avec des coordonnées approximatives puis, à l'aide du zoom et du déplacement d'obtenir les coordonnées précises d'un point.

Cordialement
Pierre
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
12 juil. 2008 à 02:40
bonjour
pour pouvoir faire un Zoom avec la roulette de la souris
il suffit simplement de mettre ce petit code dans l’événement on MouseWheel de la form1

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
if (WheelDelta>0) then Zoom.ItemIndex:=Zoom.ItemIndex+1 else
Zoom.ItemIndex:=Zoom.ItemIndex-1;
if Zoom.ItemIndex<0 then Zoom.ItemIndex:=0;
if Zoom.ItemIndex>20 then Zoom.ItemIndex:=20;
ZoomChange(Sender);
end;
a+
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
10 juil. 2008 à 15:24
Salut,

Ca aurait pu être sympas mais :

*les composants ne sont pas renommés (Idem pour le fiches).
*Beaucoup de fonctions n'ont utilisées
*On s'attend à pouvoir faire un Zoom avec la roulette de la souris : dommage

7*10
jackalunion Messages postés 128 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 14 juillet 2008
10 juil. 2008 à 11:13
Trés bonne et même trés trés bonne
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
10 juil. 2008 à 10:58
Bonjour,

Très bonne application.

Un seul souci pour le séparateur décimal des coordonnées GPS. Mais très facile à résoudre: soit avec un test soit en le forçant.

Une valeur par défaut avec un séparateur décimal "virgule" ou "point" crée une erreur si le paramètre des nombres de l'option régional du PC est différente.

Salutations
HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 6 janvier 2011
9 juil. 2008 à 20:21
Bonjour

Je suis là pour vous encourager, vraiment intéréssant votre projet.
Il rêste des choses à complèter (renommage des composants, ...) , mais c'est du bon travail méritant mes félicitations.
Rejoignez-nous