Bonjour,
je cherche à placer des coordonnées GPS sur une carte.
peut on utiliser des cartes quelconques ? ou peut on trouver des cartes de références ?
merci.
Bonjour,
je cherche à placer des coordonnées GPS sur une carte.
peut on utiliser des cartes quelconques ? ou peut on trouver des cartes de références ?
merci.
Ceux qui comme moi ont eu la chance de participer aux rencontres Delphi 2010 ont reçu une clé USB contenant un petit composant permettant d'utiliser GoogleMap mais c'est peut être pas ce que tu recherches ?
je souhaite afficher une liste de ville en utilisant leur coordonnées GPS...
peut être que ce composant pourrai m'aider.
Bonjour,
si tu travailles en coordonnées WGS84 comme Google et que tu exprimes les coordonnées X et Y en valeur décimale tu peux :
- repérer dans google maps les coordonnées du coin haut gauche et du coin droit de ta carte
- copier ta carte dans une image BMP que tu mets dans un Timage de ton programme Delphi et noter le nombre de pixels de l'image en hauteur et en largeur
- ensuite tu tu peux dessiner une croix ou un symbole en calculant la position de ton point en nombre de pixels verticaux ou horizontaux en fonction de Y et de X
C'est un peu compliqué mais cela fonctionne avec une assez bonne précision
Cordialement
Charly
si tu ne veux pas t'embêter tu peux aussi regarder du coter de google static map, en gros tu définis tes coordonnées dans une url et tu les affiches dans un TWebBrowser
exemple
http://maps.google.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=14&size=512x512&maptype=roadmap
&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318
&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false
tu peux récupérer le flux directement dans une image mais la licence de google oblige à utiliser un navigateur
voir ici pour la doc de l'api http://code.google.com/intl/fr/apis/...on/staticmaps/
Voici une des adresses concernant le composant cité plus haut
http://ajax.marcocantu.com/delphirest/default.htm
il existe également un document PDF contenant toutes les explications (dans la langue de "chat qui respire" helas) cependant je ne suis pas sur d'avoir le droit de le poster
REST in Delphi 2010
Marco Cantù, http://blog.marcocantu.com
Bonnes recherches dans le Blog
Bonsoir à toutes et à tous,
Sinon en installant l'activeX, avec D6 c'est "SHDocVw_TLB" et
"MSHTML_TLB"
Exemple fonctionnant avec D6 sur Seven 64bits :
@+,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190 unit fMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, StdCtrls, ExtCtrls, ComCtrls, SHDocVw_TLB, MSHTML_TLB; type TfrmMain = class(TForm) LabelAddress: TLabel; PanelHeader: TPanel; ButtonGotoLocation: TButton; MemoAddress: TMemo; ButtonGotoAddress: TButton; LabelLatitude: TLabel; LabelLongitude: TLabel; Longitude: TEdit; Latitude: TEdit; CheckBoxTraffic: TCheckBox; CheckBoxBicycling: TCheckBox; CheckBoxStreeView: TCheckBox; WebBrowser1: TWebBrowser; procedure FormCreate(Sender: TObject); procedure ButtonGotoAddressClick(Sender: TObject); procedure ButtonGotoLocationClick(Sender: TObject); procedure CheckBoxTrafficClick(Sender: TObject); procedure CheckBoxBicyclingClick(Sender: TObject); procedure CheckBoxStreeViewClick(Sender: TObject); private { Private declarations } HTMLWindow2: IHTMLWindow2; public { Public declarations } end; var frmMain: TfrmMain; implementation uses ActiveX; {$R *.dfm} const HTMLStr: String = '<html> '+ '<head> '+ '<meta name="viewport" content="initial-scale=1.0, user-scalable=yes" /> '+ '<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> '+ '<script type="text/javascript"> '+ ''+ ''+ ' var geocoder; '+ ' var map; '+ ' var trafficLayer;'+ ' var bikeLayer;'+ ''+ ''+ ' function initialize() { '+ ' geocoder = new google.maps.Geocoder();'+ ' var latlng = new google.maps.LatLng(40.714776,-74.019213); '+ ' var myOptions = { '+ ' zoom: 13, '+ ' center: latlng, '+ ' mapTypeId: google.maps.MapTypeId.ROADMAP '+ ' }; '+ ' map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); '+ ' trafficLayer = new google.maps.TrafficLayer();'+ ' bikeLayer = new google.maps.BicyclingLayer();'+ ' } '+ ''+ ''+ ' function codeAddress(address) { '+ ' if (geocoder) {'+ ' geocoder.geocode( { address: address}, function(results, status) { '+ ' if (status == google.maps.GeocoderStatus.OK) {'+ ' map.setCenter(results[0].geometry.location);'+ ' var marker = new google.maps.Marker({'+ ' map: map,'+ ' position: results[0].geometry.location'+ ' });'+ ' } else {'+ ' alert("Geocode was not successful for the following reason: " + status);'+ ' }'+ ' });'+ ' }'+ ' }'+ ''+ ''+ ' function GotoLatLng(Lat, Lang) { '+ ' var latlng = new google.maps.LatLng(Lat,Lang);'+ ' map.setCenter(latlng);'+ ' var marker = new google.maps.Marker({'+ ' position: latlng, '+ ' map: map,'+ ' title:Lat+","+Lang'+ ' });'+ ' }'+ ''+ ''+ ' function TrafficOn() { trafficLayer.setMap(map); }'+ ''+ ' function TrafficOff() { trafficLayer.setMap(null); }'+ ''+''+ ' function BicyclingOn() { bikeLayer.setMap(map); }'+ ''+ ' function BicyclingOff(){ bikeLayer.setMap(null);}'+ ''+ ' function StreetViewOn() { map.set("streetViewControl", true); }'+ ''+ ' function StreetViewOff() { map.set("streetViewControl", false); }'+ ''+ ''+'</script> '+ '</head> '+ '<body onload="initialize()"> '+ ' <div id="map_canvas" style="width:100%; height:100%"></div> '+ '</body> '+ '</html> '; procedure TfrmMain.FormCreate(Sender: TObject); var aStream : TMemoryStream; begin WebBrowser1.Navigate('about:blank'); if Assigned(WebBrowser1.Document) then begin aStream := TMemoryStream.Create; try aStream.WriteBuffer(Pointer(HTMLStr)^, Length(HTMLStr)); //aStream.Write(HTMLStr[1], Length(HTMLStr)); aStream.Seek(0, soFromBeginning); (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream)); finally aStream.Free; end; HTMLWindow2 := (WebBrowser1.Document as IHTMLDocument2).parentWindow; end; end; procedure TfrmMain.ButtonGotoLocationClick(Sender: TObject); begin HTMLWindow2.execScript(Format('GotoLatLng(%s,%s)',[Latitude.Text,Longitude.Text]), 'JavaScript'); end; procedure TfrmMain.ButtonGotoAddressClick(Sender: TObject); var address : string; begin address := MemoAddress.Lines.Text; address := StringReplace(StringReplace(Trim(address), #13, ' ', [rfReplaceAll]), #10, ' ', [rfReplaceAll]); HTMLWindow2.execScript(Format('codeAddress(%s)',[QuotedStr(address)]), 'JavaScript'); end; procedure TfrmMain.CheckBoxStreeViewClick(Sender: TObject); begin if CheckBoxStreeView.Checked then HTMLWindow2.execScript('StreetViewOn()', 'JavaScript') else HTMLWindow2.execScript('StreetViewOff()', 'JavaScript'); end; procedure TfrmMain.CheckBoxBicyclingClick(Sender: TObject); begin if CheckBoxBicycling.Checked then HTMLWindow2.execScript('BicyclingOn()', 'JavaScript') else HTMLWindow2.execScript('BicyclingOff()', 'JavaScript'); end; procedure TfrmMain.CheckBoxTrafficClick(Sender: TObject); begin if CheckBoxTraffic.Checked then HTMLWindow2.execScript('TrafficOn()', 'JavaScript') else HTMLWindow2.execScript('TrafficOff()', 'JavaScript'); end; end.
Cincap
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager