本文要说的是 通过LabVIEW调用百度地图服务,并在程序中显示调用的地图信息 。具体为以GPS或北斗等定位系统返回的地理位置经纬度信息为输入,通过调用百度地图对外开放的WEB服务API,实现在程序中调用百度地图,并可通过调用参数设置地图的大小、精度、定位标记等信息。
百度地图Web服务API是百度地图为开发者提供的http/https接口,即开发者通过http/https形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发JavaScript、C#、C++、Java等语言的地图应用。
Web服务API提供了一系列实用功能,经常使用到的有:
地点检索服务
提供多种场景的地点(POI)检索功能,包括城市检索、圆形区域检索、矩形区域检索。开发者可通过接口获取地点(POI)基础或详细地理信息。
注意:
地点检索服务适用于【XX大厦】、【XX小区】等POI地点名称的检索,若需要检索结构化地址,如【北京市海淀区上地十街十号】,则推荐使用地理编码服务。
示例:
地点输入提示服务 匹配用户输入内容,提供输入提示功能。常与 地点检索 服务搭配使用。也可作为轻量级地点检索服务单独使用。
示例:
地理编码服务 可将结构化地址(省/市/区/街道/门牌号)解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。;地理编码服务当前未推出国际化服务,解析地址仅限国内。
示例:
逆地理编码服务可将位置坐标解析成对应的行政区划数据以及周边高权重地标地点分布情况,整体描述坐标所在的位置。
示例:
路线规划服务 是一套REST风格的Web服务API,以HTTP/HTTPS形式提供了路线规划服务。目前,Direction API支持公交、骑行、驾车路线规划,Direction API支持中国大陆地区。
示例:
普通IP定位 是一套以HTTP/HTTPS形式提供的轻量级定位接口,利用IP获取大致位置,调用API接口,返回请求参数中指定上网IP的大致位置信息(一般为城市级别),位置信息包括:经纬度、省、市等地址信息。
示例:
静态图API可实现 将百度地图以图片形式嵌入到网页中 。只需发送HTTP请求访问百度地图静态图服务,便可在网页上以图片形式显示地图。
示例:
地图调起API 是为开发者提供直接调起百度地图产品( 百度地图手机客户端 )以满足特定业务场景下应用需求的程序接口,开发者只需按照接口规范构造一条标准的URI,便可在PC和移动端浏览器或移动开发应用中调起百度地图产品,进行地图展示和检索、线路查询、导航等功能,无需进行复杂的地图功能开发。 该套API免费对外开放,无需申请ak。
示例:
//调起百度PC或web地图,且在(lat:39.916979519873,lng:116.41004950566)坐标点上显示名称"我的位置",内容"百度大楼"的信息窗口。
通过调用百度地图的WEB服务API,即可实现在LabVIEW程序中调用百度地图。下面 以静态图API的调用 为例,具体讲解如何实现将百度地图嵌入至LabVIEW程序中。
1、前面板
首先看前面板的配置,总共就2个控件:
2、程序框图
通过LabVIEW调用百度地图的静态图API接口的程序框图如下图所示:
其中,程序框图说明如下:
注:之所以要设置禁止显示对话框,是因为若不禁止,可能会在程序运行过程中弹出“当前页面的脚本发生错误”的情况,如下图所示。
以下是几个调用示例及调用结果。
URL:http://api.map.baidu.com/staticimage?width=800&height=600¢er=113.106,27.855&zoom=17&markers=113.106,27.855&markerStyles=l,A
URL解析 :
1) http://api.map.baidu.com : 百度地图API接口访问地址 ;
2) /staticimage? ...: 访问静态图API ,“?”后面的是相关参数,各参数之间通过&进行分隔;
3) width= 800& height= 600:返回 地图大小参数 ,其中地图宽度为800,高度为600;
4) center= 113.106,27.855:表示 需要访问的地图中心点的经纬度坐标参数 ;
5) zoom= 17:表示 地图放大级别 ,值越大放大倍数越大;
6) markers= 113.106,27.855:表示需要 在地图上做标记的标记点经纬度坐标 ,若要标记多个位置,可用“|”对多个坐标点进行分隔;此处也 可以直接通过中文描述在地图上自动寻找标记点 ,如“markers=株洲体育中心|石峰大桥”;
7) markerStyles= l,A: 标记风格 ,其中A为在标记中显示的字符,其取值范围为A~Z,0~9。
示例运行结果如下图所示:
下图示例的URL为:http://api.map.baidu.com/staticimage?width=800&height=600¢er=113.106,27.855&zoom=14& markers=株洲体育中心|石峰大桥 &markerStyles=l,A|I,B
与第1个示例相比,其标记点是通过中文描述进行表达的,且有2个标记点。
下图示例的URL为:http://api.map.baidu.com/staticimage?width=800&height=600¢er=113.086,27.838& zoom=17
与前2个示例相比,该示例没有设置标记点,但图例放大系数为17, 可以展示更多的地图细节 。注:zoom参数最大可设置为19级。
通过LabVIEW自带的WebBrowser控件,通过调用百度地图提供的API接口,以http的方式可以以在线的方式轻松调用百度地图。