IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

placer des coordonnées GPS sur une carte


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut placer des coordonnées GPS sur une carte
    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.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    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 ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    je souhaite afficher une liste de ville en utilisant leur coordonnées GPS...

    peut être que ce composant pourrai m'aider.

  4. #4
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Merci je vais essayer ça :-)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 393
    Points : 637
    Points
    637
    Par défaut
    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/

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    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

Discussions similaires

  1. Placer des coordonnées GPS sur une image du monde à plat
    Par DotNET74 dans le forum Windows Phone
    Réponses: 11
    Dernier message: 02/01/2013, 10h48
  2. [Java] Affichage coordonnées GPS sur une carte
    Par Yann_69 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 02/05/2012, 16h38
  3. Affichage de coordonnée GPS sur une carte
    Par soung dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 08/03/2011, 09h35
  4. [PHP 5.2] Localiser des adresses postales sur une carte
    Par arthuro45 dans le forum Langage
    Réponses: 3
    Dernier message: 30/08/2010, 15h29
  5. Generer des objets aleatoirement sur une carte
    Par K20 dans le forum Langage
    Réponses: 13
    Dernier message: 24/12/2005, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo