偶然发现这篇文章只开了个头没写完骗了几百阅读量,实在不好意思就决定好好写完。本文主要介绍如何用matlab调用百度地图API接口实现静态图的获取,我们可以通过这个接口显示指定区域的地图,并且最多可以标注50个点。
注意事项:
我们先举一个简单的例子,全部使用默认参数看看返回的是什么。
API = 'http://api.map.baidu.com/staticimage/v2';
ak = '你的AK';
[a b]= webread(API,'ak',ak)
imshow(a,b)
这里需要解释一下,API就是服务器的地址,ak相当于一个密码,给你自己账号使用的。webread就是一个请求函数,具体的使用方法可以参考webread。然后返回的参数有两个,实际上是用两个参数来表示一张图片。如果我们需要更多的参数,只需要无脑的在后面添加参数名和参数值就行。
然后imshow(X,map) 在这里是显示带有颜色图 map 的索引图像 X。颜色图矩阵可以具有任意行数,但它必须恰好包含 3 列。每行被解释为一种颜色,其中第一个元素指定红色的强度,第二个元素指定绿色的强度,第二个元素指定蓝色的强度。颜色强度可以在 [0, 1] 区间中指定。
运行之后显示的图像为:
这个是默认的参数显示图像,然后我们以此为基础就可以显示自己想要的地图了。
参数名 | 必选 | 默认值 | 描述 |
---|
举个例子,如果我们现在需要广州市大学城的图片,大小为512*512,高分辨率,缩放等级为15,版权为文字描述,将中山大学东校区标注起来,那么所需要的的代码如下:
API = 'http://api.map.baidu.com/staticimage/v2';
ak = '你的AK';
width = 512;
height = 512;
center = '广州番禺大学城';
zoom = 15;
copyright = 1;
dpiType = 'ph';
markers = '中山大学东校区';
[a b c]= webread(API,'ak',ak,'width',width,'height',height,'center',...
center,'zoom',zoom,'copyType',copyright,'dpiType',dpiType,...
'markers',markers);
imshow(a,b)
其实这个还是很简单的,如果需要更多的标注只需要用 | 分隔就好,一些高级功能比如说自定义图标什么的可以参考官方的说明,都不难。不过需要注意的是,虽然百度地图是支持地址输入的,但是经常还是会有识别不了的情况,所以建议还是用经纬度来表示比较方便。
地址转经纬度
我简单介绍一下经纬度转换,get请求的方式和上面webread是一样的,只是需要修改一下参数,下面我举一个例子来说明:
API = 'http://api.map.baidu.com/geocoding/v3';
address = '北京市海淀区上地十街10号';
ak ='你的AK';
output='json';
callback = 'showLocation';
result = webread(API,...
'address',address,'ak',ak,'output',output,'callback',callback)
返回的结果是一个字符串,如下:
result =
'showLocation&&showLocation({"status":0,"result":{"location":{"lng":116.3084202915042,"lat":40.05703033345938},"precise":1,"confidence":80,"comprehension":100,"level":"门址"}})'
里面就包含了经纬度和其他信息,具体的参数如下图:
请求参数
觉得这篇文章对你有启发,可以点赞支持。