当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:在Winform中,许多时候都要用到地图,而现在一般都是用Google地图。Google地图的许多服务是由Javascript 控制的,为了提高操作地图的效率。文章探讨了基于Google Maps API在Winfbrm下的开发,并以WebBrowser控件为桥梁,建立了 Google地图服务与窗口程序之间的信息交互,从而实现了 在Winform窗口中访问与控制Google地图之目的。

引言

近年来,地理信息技术得到了很大的发展,特别是 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所示的计算机图像。

基于Google Maps API的Winform开发

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开发

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在接下来的5G时代当中,华为也将会凭借着自身的优势,从而处于遥遥领先的地位,但其实厉害的又不仅仅是华为企业,如今,作为国际巨头的三星开始了在6G当中的研发,6G接下来的网速,将会是5G的50倍,对于三星的这一个大动作,华...

关键字: 5G 6G 三星

随着人工智能概念的爆发,越来越多的企业开始关注并布局智能家居领域。有研究机构预测预测,2022年中国智能家居的整体产值将突破万亿元,前景一片向荣。

关键字: 全屋智能 智慧生活 小爱同学

博鳌亚洲论坛国际科技与创新论坛第二届大会在广州举行。期间举行的5G科技应用与6G展望分论坛备受瞩目。六位通信领域的头部企业、高校和科研院所的专家通过线上线下联动方式,共同研讨5G软硬件关键技术研发现状与未来6G发展前景展...

关键字: 5G 6G 通信算法

智能家居作为住宅家居现代生活场景方式,当下已经不再只是一个概念,而是基于家居家装软硬件产品为载体的生活方式实景呈现,越来越多的人在家装时选择智能家居。需求助推行业持续火热,大小资本都以狂风席卷之势进驻这个行业,根据企查查...

关键字: 全屋智能 智能家居 智能门锁

5G领先让我们信心大增,但是这不能成为我们高枕无忧的理由。随着我们认识到通讯技术在科技领域的重要性之后,竞争必然会更加激烈起来。在5G还未成熟的年代,通讯商们就已经开始将目光瞄准了6G,并开始相关的研发和布局。

关键字: 5G 6G 虚拟数字世界

小米智能家居现在已经能实现联动和自动化了,比如指纹锁进屋就打开窗帘电视,播放天气预报,根据设定温度决定是否打开空调,根据空气质量检测仪决定是否打开新风机~结合人体移动和光线传感器开灯就更是不用说了~最近也在搞全屋智能化,...

关键字: 全屋智能 温度感应 小米

根据5G设备市场的调研数据当中来看,三星所拿下的5G设备市场份额就达到了10.4%,也就是说,排在了第四名的位置。

关键字: 6G 三星 华为

拥有 5G、人工智能、物联网等新技术的支撑,智能家居行业逐渐从单品智能迈入全屋智能阶段 。其由于全屋智能产品特殊性,落地安装涉及到方案场景设计、布线,安装,施工、后期维护更新等多个环节,整体最好的实施路径是通过房屋整体装...

关键字: 全屋智能 5G 物联网

5G时代,我们实现了弯道超车,一跃超越高通,爱立信,领先于世界。现如今,5G正在全世界加速普及和应用。通讯和实业的结合,已助力生产效率进一步提高,让我们的生活变得更加美好。

关键字: 5G 6G 中国移动

自从2020年作为建设主体纳入大湾区综合性国家科学中心先行启动区,跻身科创国家队以来,松山湖科学城围绕科研创新人才的需求,全面提升城市服务能级和城市品质,让松山湖成为近悦远来、宜居宜业宜研宜创的科学家园。

关键字: 智慧城市 科学家园 人工智能

《物联网技术》杂志

2510 篇文章

关注

发布文章

编辑精选

技术子站

关闭