亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當(dāng)前位置:首頁(yè) > IT技術(shù) > Windows編程 > 正文

              WinForm使用WebBrowser控件加載百度地圖api 2.0版本不顯示
              2021-09-24 14:36:17

              直接上代碼:

              后臺(tái):

              using System;
              using System.Collections.Generic;
              using System.ComponentModel;
              using System.Data;
              using System.Drawing;
              using System.Security.Permissions;
              using System.Text;
              using System.Windows.Forms;
              
              namespace WebBrowserTest
              {
                  [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]//調(diào)用JS代碼必要
                  [System.Runtime.InteropServices.ComVisibleAttribute(true)]
                  public partial class Form1 : Form
                  {
                      public Form1()
                      {
                          InitializeComponent();
                      }
                      private void Form1_Load(object sender, EventArgs e)
                      {
                          //var browserVersion = webBrowser1.Version;
                          //var browserVersionMajor = webBrowser1.Version.Major;
                          //var uri = "file:///E:\桌面文件夾\BaiduMap_Demo.htm";
                          //webBrowser1.Navigate(uri);
                          //webBrowser1.ObjectForScripting = this;
              
                          try
                          {
              
              
                              //string str_url = Application.StartupPath + "../HTMLPage1.html";// 添加自己添加的html文件名,注意使用相對(duì)路徑的方法 HTMLPage1.html要復(fù)制到debug目錄下
              
                              string str_url = "file:///E:\桌面文件夾\BaiduMap_Demo.htm";
                              txt_url.Text = str_url;
              
                              Uri uri = new Uri(str_url);
                              webBrowser1.Url = uri;
                              //webBrowser1.ObjectForScripting = this;
              
              
                          }
                          catch (Exception ex)
                          {
                              MessageBox.Show(ex.Message, "異常", MessageBoxButtons.OK, MessageBoxIcon.Error);
                          }
              
                      }
              
                      private void btn_jump_Click(object sender, EventArgs e)
                      {
                          //本地文件 MapWinFormsinDebug  
                          string url = "file:///E:\桌面文件夾\BaiduMap_Demo.htm";  //Application.StartupPath + "\HTMLPage1.html";
                          //txt_url.Text = url;
                          url = txt_url.Text.ToString();
                          //string file = "file:///E:\WinFormBaiduMap\a1_1.html";
              
                          //屏蔽js相關(guān)錯(cuò)誤  
                          webBrowser1.ScriptErrorsSuppressed = true;
              
                          //導(dǎo)航顯示本地HTML文件  
                          webBrowser1.Navigate(url);
              
                      }
                  }
              }
              C#

              內(nèi)嵌的Html:

              <!DOCTYPE html> 
              <html>
              <head> 
              <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
              <title>Hello, World</title> 
              <style type="text/css"> 
              html{height:100%} 
              body{height:100%;margin:0px;padding:0px} 
              #container{height:100%} 
              </style> 
              <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=密鑰"></script>
              </head> 
                
              <body> 
              <div id="container"></div>
              <script type="text/javascript">
              var map = new BMap.Map("container");
              // 創(chuàng)建地圖實(shí)例 
              var point = new BMap.Point(116.404, 39.915);
              // 創(chuàng)建點(diǎn)坐標(biāo) 
              map.centerAndZoom(point, 15);
              // 初始化地圖,設(shè)置中心點(diǎn)坐標(biāo)和地圖級(jí)別 
              </script> 
              </body> 
              </html>
              Html

              ?

              Html代碼使用瀏覽器(Edge、Chrome、IE)打開(kāi)都正常

              但使用WebBrowser控件加載就顯示不出地圖

              ?

              ?但鼠標(biāo)放在地圖中間位置能彈出tip,顯示“天安門(mén)”

              感覺(jué)地圖是加載了的,但被遮罩擋住了……

              接著各種搜索解決辦法:

                是否有報(bào)錯(cuò),但嵌入的網(wǎng)頁(yè)無(wú)法調(diào)試JavaScript,于是找WebBrowser控件調(diào)試JavaScript的方法……看到太麻煩便沒(méi)有繼續(xù)往下試

              ? ? ? ?搜索WebBrowser控件無(wú)法顯示地圖,也沒(méi)搜索到有效的

              ? ? ? ?感覺(jué)方向應(yīng)該不對(duì)……

              最后去官網(wǎng)百度地圖開(kāi)放平臺(tái)JavaScript API (https://lbsyun.baidu.com/index.php)看了下

              ?

              最新的是JavaScript API GL v1.0,舊的也是JavaScript API 3.0,沒(méi)有發(fā)現(xiàn)2.0的。是否2.0及更低版本不支持了呢?

              于是將html中引入api的 由原來(lái)的2.0改成3.0試試

              <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=密鑰"></script>
              

              果然WebBrowser顯示地圖正常了

              ?

              ?個(gè)人推測(cè)應(yīng)該是百度地圖不支持2.0以下導(dǎo)致的

              ?----------------------------------------------------------------

              總結(jié)一下這次:

              1、盡可能將項(xiàng)目的問(wèn)題復(fù)現(xiàn)到測(cè)試Demo中,即建一個(gè)測(cè)試的項(xiàng)目來(lái)復(fù)現(xiàn)問(wèn)題;

              2、并且設(shè)置的方便調(diào)試,比如這個(gè)弄了一個(gè)TextBox可輸入U(xiǎn)RL訪(fǎng)問(wèn),當(dāng)時(shí)測(cè)試http://map.baidu.com是能正常顯示的,所以網(wǎng)絡(luò)并沒(méi)有攔截百度地圖的情況;

              3、盡量往問(wèn)題簡(jiǎn)單的方面找解決辦法

              本文摘自 :https://www.cnblogs.com/

              開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >