matlab调⽤百度地图API——获取输⼊地点的经纬度matlab调⽤百度地图API——获取输⼊地点的经纬度
是提供的http/https接⼝,开发者通过API向平台发起请求,能供获得地址查询、路径规划、鹰眼轨迹等服务数据。
基本介绍、如何申请申请调⽤权限等内容,详见
下⾯将展⽰⼀个地址经纬度检索服务的实现代码如下:
%%  地址经纬度检索
clc;clear;close all;
%%
name = '上海市杨浦区****路';  % 这⾥输⼊要检索的地址
[lat,lng] = GetLoc(name);
function [lat,lng]=GetLoc(name)
% 获取name字符串对应地点的经纬度
% 使⽤百度经纬度坐标
% 默认API调⽤正确
% 构造请求代码
ak='ak=**************************';  % AK密匙需要⾃⼰再百度地图开放平台上注册获取
api='api.map.baidu/geocoding/v3/';  %  API接⼝地址最新的接⼝
address = ['address=',name];
city='city=上海市';
output='output=xml';    % 输出格式为json或者xml
cmd = [api,'?',address,'&',city,'&',ak,'&',output]; %请求代码
% 发送请求
百度api接口xmlfile = webread(cmd);  % matlab2020后续将不再⽀持urlread函数,采⽤webread来替代
%    [xmlfile,status] = urlread(cmd,'get',{});  %
%正则表达式提取信息检查精度
expr1='<lat>.*?</lat>';
expr2='<lng>.*?</lng>';
lat = Xml2Num(xmlfile,expr1);
lng = Xml2Num(xmlfile,expr2);
end
function num = Xml2Num(xml,expr)
%提取xml中的数据 xml为字符
%如果有多项匹配的话取第⼀项
%如果没有匹配返回0
xmlmatch = regexp(xml,expr,'match');
if(isempty(xmlmatch)==0)
num = Lab2Num(xmlmatch{1},expr);
else
num = 0;
end
end
function num = Lab2Num(lab,expr)
%提取lab中的数据
s = max(size(expr));
s = (s-4)/2;
l = max(size(lab));
str = lab(s+1:l-s-1);
num = str2double(str);
end
需要注意的⼏点:
1、代码中接⼝参数和格式要符合要求
查看“正地址编码服务”的,了解具体的参数和格式要求。
2、从指定的url中web服务读取内容
matlab2021版中采⽤webread函数实现,webread以字符数组的形式返回搜索结果页⾯的HTML

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。