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

Web & réseau Delphi Discussion :

problème avec Api google maps


Sujet :

Web & réseau Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut problème avec Api google maps
    J'utilise un TWebbrowser dans mon appli Delphi 10 pour y afficher une carte du monde puis le tracé d'un vol.

    J'ai bien OleCtrls, SHDocVw, et MSHTML dans les uses

    La déclaration de HTMLWindow est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    private
        { Déclarations privées }
        HTMLWindow2: IHTMLWindow2;
    ...
    Le script Java est:
    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
     
    HTMLStr: AnsiString = //Java scrip for Google map
    '<html> '+
    '<head> '+
    '<meta name="viewport" content="initial-scale=1.0, user-scalable=yes" /> '+
    '<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?v=3&sensor=true"></script> '+   //24/2/2015
    '<script type="text/javascript"> '+
    '  var map;'+
    '  var polyline = [];'+
    '  var markersArray = [];'+
    '  var Circle = { '+
    '  path: google.maps.SymbolPath.CIRCLE ,'+
    '  fillColor: "Red",'+
    '  fillOpacity: 1.0,'+
    '  scale: 3,'+
    '  strokeColor:"Black",'+
    '  strokeWeight: 1 '+
    '};'+
    ''+
    ''+
    '  function initialize() {'+
    '  var myLatLng = new google.maps.LatLng(48.0,2.0);'+
    '  var mapOptions = {'+
    '    zoom: 5,'+
    '    center: myLatLng,'+
    '    mapTypeId: google.maps.MapTypeId.TERRAIN'+
    '  };'+
    '  map = new google.maps.Map(document.getElementById("map_canvas"),'+
    '      mapOptions);'+
    '}'+
    ''+
    ' function DrawTrack(FromLat,FromLng,ToLat,ToLng){'+
    ' var geo_path = new Array();'+
    '     var geo_path = [new google.maps.LatLng(FromLat,FromLng),new google.maps.LatLng(ToLat,ToLng)];'+
    ' var Track = new google.maps.Polyline({'+
    '     path: geo_path,'+
    '     strokeColor: "#FF0000",'+
    '     strokeOpacity: 1.0,'+
    '     strokeWeight: 2'+
    ' });'+
    ' polyline.push(Track);'+
    ' Track.setMap (map);'+
    '}'+
    ''+
    ''+
    ' function RemoveTrack(){' +
    '  if (polyline){' +
    '    for(i in polyline){' +
    '      polyline[i].setMap(null);' +
    '    }' +
    '     polyline.length =0;' +
    '   }' +
    '}' +
    ''+
    'function ClearMarkers() {  '+
    '  if (markersArray) {        '+
    '    for (i in markersArray) {  '+
    '      markersArray[i].setMap(null); '+
    '    } '+
    '  } '+
    ' Bounds = new google.maps.LatLngBounds();'+
    '}  '+
    ''+
    'var Bounds = new google.maps.LatLngBounds(); '+
    '  function PutMarker(Lat, Lang, Msg) { '+
    '   var latlng = new google.maps.LatLng(Lat,Lang);'+
    '   var marker = new google.maps.Marker({'+
    '      position: latlng,'+
    '      icon: Circle,'+
    '      map: map,'+
    '      title: Msg'+
    '  });'+
    ' markersArray.push(marker); '+
    ' Bounds.extend(latlng);'+
    ' map.fitBounds(Bounds);'+
    '}'+
    ''+
    ''+
    ''+'</script> '+
    '</head> '+
    '<body onload="initialize()"> '+
    '  <div id="map_canvas" style="width:100%; height:100%"></div> '+
    '</body> '+
    '</html> ';
    La procedure Form Create est:
    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
     
    procedure TfrmBrowser.FormCreate(Sender: TObject);
    var
       aStream : TMemoryStream;
    begin
      if Assigned(wbrWxCharts.Document) then
      begin
        aStream:= TMemoryStream.Create;
        try
          aStream.WriteBuffer(Pointer(HTMLStr)^, Length(HTMLStr));
          aStream.Seek(0, soFromBeginning);
          (wbrWxCharts.Document as IPersistStreamInit).Load(TStreamAdapter.
                                                            Create(aStream));
        finally
          aStream.Free;
        end;
        HTMLWindow2 := (wbrWxCharts.Document as IHTMLDocument2).parentWindow;
      end;
    end;
    La procedure FormActivate est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TfrmBrowser.FormActivate(Sender: TObject);
    begin
      if frmTripPlanner.btnFlightMap.Tag = 1 then
      begin
        HTMLWindow2.execScript(Format('RemoveTrack()',[]),'JavaScript');     
        HTMLWindow2.execScript(Format('ClearMarkers()',[]),'JavaScript');       
        HTMLWindow2.execScript('initialize()','JavaScript');
        PlotMap;
        frmTripPlanner.btnFlightMap.Tag:= 0;
      end;
    end;
    Lors de l'ouverture de la fiche, j'ai une violation d'accès sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HTMLWindow2.execScript(Format('RemoveTrack()',[]),'JavaScript');
    Pourriez vous m'aider à résoudre ce problème.

    Cordialement
    Pierre

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu es sûr que HTMLWindow2 n'est pas à nil ?
    D'ailleurs est-ce que wbrWxCharts.Document contient quelque chose ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonjour,

    Merci de la réponse.
    Non, HTMLWindow2 n'est pas à nil.

    En fait, j'ai adapté le code trouvé ici: https://theroadtodelphi.wordpress.co...functionality/
    Mais ceci ne fonctionne pas.

    Merci.

    Cordialement
    Pierre

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    intéressant de passer par IHTMLWindow et en passant merci pour le lien

    moi je passe directement par WebBrowser1.LoadFromStrings(.....,''); comme je l'ai indiqué ici, d'un autre côté je n'utilise pas les fonctions
    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

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Une précision,

    J'ai ajouté la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wbrWxCharts.Navigate('about:blank');
    Au tout début de la procédure FormCreate.

    A présent la violation d'accès se produit avant même l'ouverture de la fiche principale du projet.

    Une idée?

    Cordialement
    Pierre

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonjour,

    Une précision supplémentaire:

    Lors de la violation d'accès, si j'arrête, le programme indique la fiche System.Win.ComObj et bloque sur la procedure:
    A la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Temp := Dispatch.GetIDsOfNames(GUID_NULL, WideNames, NameCount, GetThreadLocale, DispIDs);
    Une idée?.

    Cordialement
    Pierre

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonjour,

    En fait, je ferme le sujet faute de réponse.

    Merci
    Pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème import API Google Maps
    Par nayro57 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 02/04/2015, 18h44
  2. Problèmes avec API Google ou Web?
    Par rocherpat dans le forum Web & réseau
    Réponses: 1
    Dernier message: 12/09/2012, 09h58
  3. [C#][WM 6] Page blanche avec API Google Maps V3
    Par ikeabp dans le forum Windows Mobile
    Réponses: 0
    Dernier message: 08/03/2011, 09h29
  4. Affichage avec api google map
    Par S-Kayp dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/10/2008, 13h52
  5. Tester l'existence d'un point avec l'api google map
    Par numerodix dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/10/2008, 09h28

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