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

Macros et VBA Excel Discussion :

Bing Maps API


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Bing Maps API
    Bonjour le forum,

    J'utilisais par le passé 'Virtual Earth' (devenu 'Bing Maps') couplé avec le 'AJAX Control 6.3' pour réaliser des applications de cartographie.

    Cette solution étant quelque peu datée, je souhaite désormais utiliser le 'AJAX Control 7.0'.

    J'ai créé le fichier d'initialisation suivant ('connexion.html'):
    Code html : 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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
       <head>
          <title></title>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     
          <script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
     
          <script type="text/javascript">
     
             function GetMap()
             {
                var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials:"****************************************************************"});
             }
                     
          </script>
       </head>
     
       <body onload="GetMap();"> 
          <div id='mapDiv' style="position:absolute; width:700px; height:700px;"></div>
       </body>
     
    </html>
    J'utilise un formulaire qui contient un contrôle 'WebBrowser' avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Private Sub UserForm_Initialize()
      wbrBrowser.Navigate ThisWorkbook.Path & "\connexion.html"
    End Sub
     
    Private Sub cmbCentrer_Click()
      EnvoiScript "map.setView({center: new Microsoft.Maps.Location(47, -122), zoom: 14, animate: false });"
    End Sub
     
    Private Sub EnvoiScript(Js As String)
      wbrBrowser.Document.parentWindow.execScript Js, "Javascript"
    End Sub
    Sauf que ça ne marche pas. j'ai une erreur 80020101 liée à l'appel du script avec comme explication 'map is undefined'.
    Dernière modification par AlainTech ; 10/08/2013 à 16h48. Motif: Correction balises

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Un exemple à adapter (j'ai utilisé le WebBrowser sur Feuil1, ça sera idem pour un userform)

    Le code crée lui même le fichier html selon les paramètres Latitude, Longitude et Zoom

    Adapte le Key, j'ai mis un au pif
    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
    Private Sub CommandButton1_Click()
    Dim Fichier As String
     
    Fichier = ThisWorkbook.Path & "\connexion.html"
    CreateHtmlFile Fichier, 35.78472, -5.81278, 14
    Feuil1.wbrBrowser.Navigate Fichier
    End Sub
     
    'File: Fichier html
    'Lat: Latitude
    'Lon: Longitude
    'Zm, Zoom
     
    Private Sub CreateHtmlFile(ByVal File As String, ByVal Lon As Double, ByVal Lat As Double, ByVal Zm As Integer)
    Dim Tmp As String
    Dim N As Integer
     
    Tmp = "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">"
    Tmp = Tmp & vbNewLine & "<html>"
    Tmp = Tmp & vbNewLine & "<head>"
    Tmp = Tmp & vbNewLine & "<title></title>"
    Tmp = Tmp & vbNewLine & "<meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"">"
    Tmp = Tmp & vbNewLine & "<script type=""text/javascript"" src=""http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0""></script>"
    Tmp = Tmp & vbNewLine & "<script type=""text/javascript"">"
    Tmp = Tmp & vbNewLine & "function GetMap()"
    Tmp = Tmp & vbNewLine & "{"
    Tmp = Tmp & vbNewLine & "var mapOptions = {"
    Tmp = Tmp & vbNewLine & "credentials: ""DpSGzpBhOMTIdmLPwKJvcwHQnylw35Ljul4UiJzACuUCKPIwZyU2rIeWyn8MNNnF"","
    Tmp = Tmp & vbNewLine & "center: new Microsoft.Maps.Location(" & CStr(Lon) & "," & CStr(Lat) & "),"
    '=====les 3 choix: automatic, birdseye ou road
    'Tmp = Tmp & vbNewLine & "mapTypeId: Microsoft.Maps.MapTypeId.birdseye,"
    'Tmp = Tmp & vbNewLine & "mapTypeId: Microsoft.Maps.MapTypeId.road,"
    Tmp = Tmp & vbNewLine & "mapTypeId: Microsoft.Maps.MapTypeId.automatic,"
    '=====
    Tmp = Tmp & vbNewLine & "zoom: " & Zm & ","
    Tmp = Tmp & vbNewLine & "showScalebar: true"
    Tmp = Tmp & vbNewLine & "}"
    Tmp = Tmp & vbNewLine & "var map = new Microsoft.Maps.Map(document.getElementById(""mapDiv""), mapOptions);"
    Tmp = Tmp & vbNewLine & "}"
    Tmp = Tmp & vbNewLine & "</script>"
    Tmp = Tmp & vbNewLine & "</head>"
    Tmp = Tmp & vbNewLine & "<body onload=""GetMap();"">"
    Tmp = Tmp & vbNewLine & "<div id='mapDiv' style=""position:relative; width:600px; height:600px;""></div>"
    Tmp = Tmp & vbNewLine & "</body>"
    Tmp = Tmp & vbNewLine & "</html>"
     
    N = FreeFile()
    Open File For Output As #N
    Print #N, Tmp
    Close #N
     
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ok mais imaginons que je créé un bouton de contrôle qui permet de centrer la carte sur une ville choisie par l'utilisateur ou n'importe quelle action ; il faut générer le fichier '.html' à chaque fois ?

    On ne peut pas envoyer une commande 'Javascript' comme c'était le cas dans la version 6.3 ?

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Le code javascript à envoyer par ton bouton est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnvoiScript "GetMap();"
    Mais pour cela, les paramètres voulus ne sont pas transmis.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Avec l'ancienne version de l'API je pouvais appeler directement les fonctions (comme dans l'exemple en PJ).

    Ce comportement n'est plus réalisable avec la nouvelle version de l'API ?

    Je me suis permis de poster également sur le forum où j'avais anciennement trouvé un tutoriel sur 'Visual Earth'.
    Dernière modification par Invité ; 08/08/2013 à 14h05.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je vois
    Déclare ta variable map en dehors de GetMap et essaies ton code

    Code html : 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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
       <head>
          <title></title>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     
          <script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
     
          <script type="text/javascript">
            var map=null;
             function GetMap()
             {
                map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials:"****************************************************************"});
             }
     
          </script>
       </head>
     
       <body onload="GetMap();"> 
          <div id='mapDiv' style="position:absolute; width:700px; height:700px;"></div>
       </body>
     
    </html>

Discussions similaires

  1. google map api
    Par debutantasp dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/05/2008, 14h02
  2. Google Map - API Java ?
    Par onlytoine dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 28/04/2008, 11h25
  3. Utilisation de la Google Maps API ?
    Par [ZiP] dans le forum Web & réseau
    Réponses: 4
    Dernier message: 04/09/2007, 22h26
  4. Google Map API --> Javascript et code behind C#
    Par bridel dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/01/2007, 21h07
  5. google map api
    Par raphs43 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/12/2006, 20h28

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