基于Google Maps API的Winform开发
扫描二维码
随时随地手机看文章
引言
近年来,地理信息技术得到了很大的发展,特别是 Google公司推出的Google Maps得到了广泛的应用,Google 推出了 Google地图的应用程序接口 Google Maps API供用 户应用。与此同时,Winform由于具有简单强大、安全、灵 活的控件等特点被大量的开发者使用,并且,Google地图运 用于Windows窗体应用程序成为了当今的热点。本文通过 对Google Maps在Winform中实现的研究,重点探讨基于 Google Maps API的Winform开发,对Google地图解析在 Windows form中进行设计实现。
1 Google Maps API 的应用
Google向开发者免费发布全球地图和卫星影像的同时, 开发了其应用程序接口,开发人员可以根据自己的需求开发基 于Google Maps API的地图服务,将Google Maps嵌入自己 的Winform应用。
载入 Google Map API
在HTML页面中使用Google Maps API时,页面中必 须含有指向Google Maps API的URL,最基本格式为http : 〃maps.google.com/maps/api/js?sensor=false。这说明使用了 Google Maps API 定义的 JavaScript 文件的位置。sensor=false 代表没有使用传感器(类似于定位当前位置的GPS)。
1.2初始化地图
要让地图在网页上显示,必须为其留出一个位置。通 常都通过创建名为div的元素并在浏览器的文档对象模型 (DOM)中获取此元素的引用来执行此操作。而通过div的样式,可以指定地图的大小。例如:
<div id="map"style="width : 400px ; height: 400px"></ div>
Google Maps API中通过对HTML页面的<body>元素 添加onload事件来控制地图的载入与初始化。例如:
创建latlng对象,用来设置地图的中心:
var latlng = new google.maps.LatLng(57.8, 14.0);
创建options对象,设置地图的基本属性:
var options = {
zoom : 6,
center: latlng,
mapTypeId : google.maps.MapTypeId.ROADMAP }; 调用函数,初始化地图:
var map=new google.maps.Map(document.getElement
ById(/map/), options);
以上内容需要包含在一个函数中:
function initialize()
{
}
最后,再通过body标签的onload事件来初始化地图对象:
<body onload="initialize()">
<div id="map">
</div>
</body>。
1.3设置坐标
在Google地图上设置坐标,并确定坐标在地图上的位置,
例如:
var marker = new google.maps.Marker(
{
position : new google.maps.LatLng(56.8848, 14.7730),
map : map
title : 'My workplace',
clickable : false,
icon : 'http : //google-maps-icons.googlecode.com/files/ factory.png'
});
设置坐标后,即可得到如图1所示的计算机图像。
2 Google地图服务与Winform后台数据交互
Winform的后台C#代码可以实现与窗口内的控件进行信 息交互,Google地图服务可以实现基于Google Map API的地 图显示,但Google地图服务与Web服务之间的信息不能直接 互通信息,本文以WebBrowser控件为桥梁,实现Google地 图服务与Winform后台数据互通。
WebBrowser 控件
WebBrowser控件可以在Windows窗体应用程序中承载 网页以及支持浏览器的其他文档,并且可以在应用程序中提供 基于HTML的集成用户帮助或Web浏览功能。此外,还可以 使用WebBrowser控件向Windows窗体客户端应用程序添加 基于Web的现有控件。
利用Uri类,加载指定的HTML页面,并初始化 WebBrowser,例如:
Uri url = new Uri(address, UriKind.Absolute);
WebBrowserLUrl = url ;
Google地图中的Javascript函数与Winform中C#函数的 互相调用
InteropServices. ComVisibleAttribute (true)],使 com 对象是对 网页里的javascript可见的。
其次,Winfrom后台函数设置成Public函数:
public string LonString()
{
double[] lon = new double⑵;
lon[0] = 116.407113 ;
lon[1] = 117.202148 ; return String(lon);
}
并在Javascript中通过window.external捕获调用C#定 义好的函数:
var lon_string=window. external.LonString();
C#里Javascript函数的执行
定义一个Javascript函数:
function SetHybridMap()
{
map.setMapTypeld(google.maps.MapTypeld.HYBRID);
}
之后,执行Javascript函数:
mshtml.IHTMLDocument2 currentDoc =(mshtml.IHTM LDocument2)webBrow ser1.Doc ument.DomDocument ;
mshtml.IHTMLWindow2 win = (mshtml. IHTMLWindow2)currentDoc.parentWindow ;
win.execScript(" SetHybridMap()", "javascript");
3结语
Winform凭借着丰富的控件,以及简单强大等优点,在 近些年迅速崛起,充分利用公共语言运行库的安全特性,一 切都可以在Windows窗体中实现。而Google地图服务能够实 现不同国家、不同地区的地理数据标识和地图显示功能。本 文将Google地图实现在Winform窗体上,可以利用Google 服务的定位、搜索等服务,为大型客户端系统提供了思路。
20211118_6195dc7485580__基于 Google Maps API的Winform开发