由于Google Map不提供WinForm的API,在WinForm中显示Google地图可以采用WebBrowser浏览器控件显示网页,从而实现在WinForm中显示地图。在WebBrowser中可以通过直接打开网页(如http://maps.google.com/)来显示Google地图,也可以自己在本地设计一个Google地图网页,然后加载到WebBrowser中显示地图。通过其他服务器发布的地图网页有时候可能无法满足你的开发需求(在很多情况下它可能没有公开一些数据接口),所以,建议在本地设计一个Google地图网页,并开发所需的地图功能。Google地图为浏览器端的开发提供了多种API,如Javascript、Flex,若采用Flex需要Flash Builder等IDE来进行FLEX开发,但采用Javascript来开发就要简单方便多了,本身我们的浏览器就是Javascript的编译器,只需要用文本工具编写简单的HTML和Javascript代码即可。
1.1一个简单的Javascript地图
首先,利用文本工具或者Javascript专业编辑工具(如1st JavaScript Editor),新建一个文件,输入如下代码(注意红色的部分):
<!DOCTYPEhtml PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<metaname="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no" />
<metahttp-equiv="content-type" content="text/html;charset=gb2312">
<title>地图定位</title>
<linkhref="http://code.google.com/apis/maps/documentation/javascript/examples/default.css"rel="stylesheet" type="text/css" />
<scripttype="text/javascript"src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<scripttype="text/javascript">
下面来解释一下上面红色代码的含义,首先在script中定义了地图对象map,然后定义初始化函数initialize(),在initialize()函数中首先定义了变量myLatlng,用于表示地图显示中心,如下图所示:
变量myOptions用于定义地图的一些选项,如缩放等级(zoom)、地图中心(center)、是否能双击缩放(disableDoubleClickZoom)、地图类型(mapTypeId)等等。
其中地图类型mapTypeId主要有四种地图,即:
l HYBRID
:该地图类型显示卫星图像上的主要街道透明层。
l ROADMAP
:该地图类型显示普通的街道地图。
l SATELLITE
:
该地图类型显示卫星图像。
l TERRAIN
:
该地图类型显示带有自然特征(如地形和植被)的地图。
在定义了变量myOptions后,实例化地图对象,如下:
map = newgoogle.maps.Map(document.getElementById("map_canvas"), myOptions);
上面代码中document.getElementById("map_canvas")是获取HTML中添加的map_canvas对象,即将地图显示在map_canvas中。
至此,完成了一个简单的地图。
1.2在WinForm中显示地图
在Winform中显示地图主要分两个步骤,第一个步骤就是创建项目并添加WebBrowser控件,第二步就是加载前面编写的index.htm网页文件。
首先新建一个项目,如下图所示:然后添加Webbrowser控件到窗体中,假定添加的Webbrowser控件的名称为webBrowser1,在窗体的Load事件中添加加载网页的代码,假定网页存放在项目的debug文件夹中,如下:
privatevoid Form1_Load(objectsender, EventArgs e)
{
try
{
//加载地图
stringaddress = "File:\\" + Application.StartupPath + "\\index.htm";
Uriurl = new Uri(address);
webBrowser1.Url = url;
webBrowser1.ScriptErrorsSuppressed = false;
}
catch(Exception except)
{
MessageBox.Show(except.Message,"提示!",
MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
运行程序,即在Winform中显示了前面编写的网页地图,如下图所示:
}
</script>
</head>
<bodyοnlοad="initialize()">
<divid="map_canvas" ></div>
</body>
将文件保存为index.htm,然后用浏览器打开该网页文件,即在网页中添加了Google地图,其结果如下图所示: