c#,winform调用百度地图及“BMap”未定义错误解决方案

来源:互联网 发布:网页游戏如何修改数据 编辑:程序博客网 时间:2024/05/22 03:13


    今天在实验室写了一个测试程序:用c# winform 调用百度地图。一切都很顺利,运行程序地图能够正常显示。但是晚上回到寝室后,同样的程序运行时,却出现了“BMap”未定义的错误。费劲周折,花费了近两个小时才找到问题所在,并解决。

    首先说一下c#调用百度地图的基本思路:

   ①要有一个能显示百度地图的html文件,不论是在本地端还是服务器端;这里给出一个示例代码

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>c#与百度地图交互测试文件</title><style type="text/css">body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}#map{height:100%;width:100%;}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=mgRIjArNHuol074XjsyDPQMu7g22hEjZ"></script></head><body><div id="map"></div></body></html><script type="text/javascript">// 创建一个地图用于显示var map = new BMap.Map("map");map.centerAndZoom(new BMap.Point(117.269945,31.86713), 13);map.enableScrollWheelZoom(true);</script>

    ②其次要在winform中添加webBrowser控件,并设置其uri熟悉

using System;using System.Collections.Gener

ic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WebBrowser_test{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.webBrowser1.Url = new Uri(@"A:\download_file\document\GitHub\iTravel_project\iTravel_other\iTravel_syf\WebBrowser_test\WebBrowser_test\bin\map.html"); } }}

    接着探讨“BMap”未定义错误原因与解决:

    大家的原因可能各有不同,http://blog.csdn.net/eastmount/article/details/51380996 中提及了各种情况值得参考,但是并没有快速精确地解决我的问题。

    上述链接内容启示我webBrowser调用的是ie浏览器,可能是由于ie浏览器无法正常浏览网页的原因造成的。我打开ie浏览器,输入www.baidu.com,发现的确不能访问网页,那么是不是解决了ie浏览器上网的问题我们的问题就解决了呢?http://www.iefans.net/a/357.html 中提供了ie和edge不能正常上网的一种解决方案——>问题出在局域网设置上:

     通过internet选项更改局域网设置,只保留自动检测设置,确认更改并应用。这样ie浏览器又可以正常使用了,之后测试程序,果然可以正常运行了。

     能够解决问题了,但是还需要推敲一下原因。在实验室时,用的是实验室的网线,处于局域网中,可能一旦处于局域网中,ie和edge浏览器就会自动更改局域网设置。回到寝室后,使用是公网,但此时ie和edge的局域网设置并没有自动更改,因此产生了问题。

     希望我的总结能对大家起到一定帮助。

1 0