none
VB.net; BingMap in WebBrowser-Control anzeigen RRS feed

  • Frage

  • <title></title><meta charset="utf-8" /> <script type="text/javascript"> function GetMap() { var map = new Microsoft.Maps.Map('#myMap'); center: new Microsoft.Maps.Location(51.50632, -0.12714); zoom: 10 } </script>

    Hallo zusammen,

    ich habe eine Datei 'BingMap.html' mit folgendem Inhalt:

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <meta charset="utf-8" />

        <!-- Reference to the Bing Maps SDK -->
        <script type='text/javascript'
                src='http://www.bing.com/api/maps/mapcontrol?callback=GetMap&setLang=de&key=[mein BingMapsKey]'
                async defer></script>

        <script type='text/javascript'>
        function GetMap()
        {
           var map = new Microsoft.Maps.Map('#myMap');
           center: new Microsoft.Maps.Location(51.50632, -0.12714);
           zoom: 10
        }
        </script>

    </head>
    <body>
        <div id="myMap" style=";width:600px;height:400px;"></div>
    </body>
    </html>

    In einer VB-Form steht der Code:
    wbbKarte.Navigate("about:blank")
    wbbKarte.DocumentText = GetFileContents(Application.StartupPath + "\BingMap.html").ToString
    wbbKarte.Refresh()
    mit wbbKarte als ein WebBrowser-Control und GetFileContents als eine Funktion zum Einlesen des oben gezeigten HTML aus einem Text-File (BingMap.html).

    Führe ich den Code beim Laden der Form aus, passiert gar nichts. WebBrowser zeigt nichts an.
    Woran kann das denn liegen?

    Grüße-

                

    Dietrich


    • Bearbeitet dherrmann Mittwoch, 30. Januar 2019 15:51
    Mittwoch, 30. Januar 2019 15:51

Antworten

  • Hallo,

    zwischenzeitlich hab eich bemerkt, dass ich den HTML-Code ein bisschen falsch mit eigener Idee vermischt hatte. Ich zeige hier jetzt mal den Code, mit dem es funktioniert. Meinen VB-Code habe ich so gelassen wie oben gezeigt.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
        <title></title>
    
        <!-- Reference to the Bing Maps SDK -->
        <script type='text/javascript'
                src='http://www.bing.com/api/maps/mapcontrol?callback=GetMap' defer="defer"></script>
    
        <script type='text/javascript'>
        function GetMap()
        {
            var map = new Microsoft.Maps.Map('#myMap', {
                credentials: 'meinBingMapKey',
                center: new Microsoft.Maps.Location(51.50632, -0.12714),
                mapTypeId: Microsoft.Maps.MapTypeId.aerial,
                zoom: 10
            });
        }
        </script>
    </head>
    <body>
        <div id="myMap" style=";width:600px;height:400px;"></div>
    </body>
    </html>
    
    Danke nochmals für Mitarbeit und Tipps!!!
    Grüße-


    Dietrich

    • Als Antwort markiert dherrmann Mittwoch, 30. Januar 2019 17:06
    Mittwoch, 30. Januar 2019 17:06

Alle Antworten

  • Hi,

    Ich nehme mal an, dass Du das normale WebBrowser Control verwendest.

    Dieses nutzt letztendlich immer Internet Explorer 7 als Engine.

    Du kannst über zwei Registryeinstellungen aber die IE Version beeinflussen, die vom WebBrowser Control verwendet wird. Siehe dazu:

      Internet Feature Controls (B..C)

    Erstell dazu folgende DWORD Registry Einträge:

    HKEY_LOCAL_MACHINE (oder HKEY_CURRENT_USER)
       SOFTWARE
          Microsoft
             Internet Explorer
                Main
                   FeatureControl
                      FEATURE_BEHAVIORS
                         deineanwendung.exe = 1 (DWORD)

    Dieser Eintrag dient dazu, das Feature generell für deine Anwendung zu aktivieren. Die IE Version steuerst Du dann mit folgendem Eintrag:

    HKEY_LOCAL_MACHINE (oder HKEY_CURRENT_USER)
       SOFTWARE
          Microsoft
             Internet Explorer
                Main
                   FeatureControl
                      FEATURE_BROWSER_EMULATION
                         deineanwendung.exe = 11001 (für IE 11, DWORD)

    Weitere Angaben für die unterschiedlichen IE Versionen, findest Du in obigem Link.

    Achte darauf, dass deine Exe Datei beim Debuggen evtl. "deineanwendung.vshost.exe" heißen könnte. Wenn es im Debugmodus also nicht funktioniert, leg die beiden DOWRD Werte nochmal mit diesem Namen zusätzlich an.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Mittwoch, 30. Januar 2019 16:09
    Moderator
  • Hi,

    funktioniert die HTML Seite bei dir im Browser? Bei mir nicht.

    Und warum 

    wbbKarte.DocumentText = GetFileContents(Application.StartupPath + "\BingMap.html").ToString
    wbbKarte.Refresh()

    ??

    Warum nicht einfach wbbKarte.Navigate(......   ?

    Gruß


    Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP

    Mittwoch, 30. Januar 2019 16:20
  • Hallo Stefan F., danke für Tipp, den ich schon mal ausgeführt habe...

    Hallo Stefan K.,
    stimmt funktioniert auch im Browser nicht (Test via Expression Web 4). Keine Ahnung wieso, HTML ist aus einer Anleitung

    https://docs.microsoft.com/de-de/bingmaps/v8-web-control/creating-and-hosting-map-controls/creating-a-basic-map-control

    Was meinst du bei ...Navigate(...? Was soll ich da als Param angeben?

    Grüße-


    Dietrich

    Mittwoch, 30. Januar 2019 16:52
  • Hallo,

    zwischenzeitlich hab eich bemerkt, dass ich den HTML-Code ein bisschen falsch mit eigener Idee vermischt hatte. Ich zeige hier jetzt mal den Code, mit dem es funktioniert. Meinen VB-Code habe ich so gelassen wie oben gezeigt.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
        <title></title>
    
        <!-- Reference to the Bing Maps SDK -->
        <script type='text/javascript'
                src='http://www.bing.com/api/maps/mapcontrol?callback=GetMap' defer="defer"></script>
    
        <script type='text/javascript'>
        function GetMap()
        {
            var map = new Microsoft.Maps.Map('#myMap', {
                credentials: 'meinBingMapKey',
                center: new Microsoft.Maps.Location(51.50632, -0.12714),
                mapTypeId: Microsoft.Maps.MapTypeId.aerial,
                zoom: 10
            });
        }
        </script>
    </head>
    <body>
        <div id="myMap" style=";width:600px;height:400px;"></div>
    </body>
    </html>
    
    Danke nochmals für Mitarbeit und Tipps!!!
    Grüße-


    Dietrich

    • Als Antwort markiert dherrmann Mittwoch, 30. Januar 2019 17:06
    Mittwoch, 30. Januar 2019 17:06
  • Hallo Dietrich,

    da ist die Doku wohl falsch. Beim erzeugen der Map fehlt ein Parameter.

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <meta charset="utf-8" />
    
        <!-- Reference to the Bing Maps SDK -->
        <script type='text/javascript' src='https://www.bing.com/api/maps/mapcontrol?callback=GetMap&key=<MapKey>' async defer></script>
    
        <script type='text/javascript'>
        function GetMap()
        {
            var map = new Microsoft.Maps.Map('#myMap', {});
    
            //Add your post map load code here.
        }
        </script>
    </head>
    <body>
        <div id="myMap" style=";width:600px;height:400px;"></div>
    </body>
    </html>

    Anstelle von:

    var map = new Microsoft.Maps.Map('#myMap');

    also:

    var map = new Microsoft.Maps.Map('#myMap', {});

    Stefan Krömer meinte wohl die WebBrowser.Navigate Methode und die Angabe des lokalen Dateipfads deiner HTML Datei.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Mittwoch, 30. Januar 2019 17:10
    Moderator

  • Was meinst du bei ...Navigate(...? Was soll ich da als Param angeben?


    Wenn du eine HTML-Datei hast, kannst du auch einfach:

    wbbKarte.Navigate(Application.StartupPath + "\BingMap.html") 

    nehmen.

    Gruß


    Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP

    Mittwoch, 30. Januar 2019 17:18