百度批量地址逆解析
来源:互联网 发布:威客圈淘宝单 编辑:程序博客网 时间:2024/06/05 15:22
由于PM想要批量添加地址,地址都是文本性的,需要将文本内容转换成百度详细的地址,但是baidu不提供批量查询接口
流程:
1. 根据地址查经纬度
2. 根据经纬度反查地址详细信息(包含省份,城市,区域等信息)
难点在于:
1. 批量跨域请求,无状态,请求返回的结果和参数对应关系管理
2. 批量二次请求
3. 使用Promise
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>【baidu Api】批量地址逆解析</title>
</head>
<body>
<ul>
<li class="item">八维研究学院</li>
<li class="item">上地华联商厦</li>
<li class="item">中国农业大学</li>
<li class="item">清华大学</li>
<li class="item">百旺商城</li>
<li class="item">上地办公中心</li>
<li class="item">百度大厦</li>
<li class="item">西二旗地铁站</li>
<li class="item">沙河地铁站</li>
</ul>
<input type="hidden" name="addressListData" value="">
</body>
<script>
(function(){
var addrList = [];
$('.item').each(function(i ,dom) {
if ($(this).text() != '') {
var obj = {
input_address : $(this).text(),
lat : '',
lng : '',
latlng : '',
district_name : '',
city_name : '',
street :'',
status : 0
}
addrList.push(obj);
}
});
var getLatLng = function(text, city, callback) {
var url = 'http://api.map.baidu.com/geocoder/v2/?output=json&address=' +text + '&city='+city+'&ak=yourBaiduAk';
$.ajax({
async:false,
url: url,
type: "GET",
dataType: 'jsonp',
timeout: 5000,
success: function (json) {
callback && callback(json)
}
});
}
var latlng2Addr = function(i, callback) {
if (addrList[i].status != 0 ) {
return;
}
var url = 'http://api.map.baidu.com/geocoder/v2/?location='+addrList[i].lat+','+addrList[i].lng+'&output=json&pois=1&ak=yourBaiduAk';
$.ajax({
async:false,
url: url,
type: "GET",
dataType: 'jsonp',
timeout: 5000,
success: function (json) {
if (json.status == 0) {
addrList[i].city_name = json.result.addressComponent.city;
addrList[i].district_name = json.result.addressComponent.district;
addrList[i].street = json.result.addressComponent.street;
}
}
});
}
var parseAddrList = function(i) {
return new Promise(function(resolve, reject){
getLatLng(addrList[i].input_address, '北京', function(data){
console
if ( data.status == 0 ) {
addrList[i].lat = data.result.location.lat;
addrList[i].lng = data.result.location.lng;
} else {
addrList[i].status = -1;
}
resolve(i);
});
});
}
var AllPromise = [];
for( var i in addrList) {
AllPromise.push(parseAddrList(i).then(function(index){
latlng2Addr(index);
console.log(index);
}));
}
Promise.all(AllPromise).then(function(){
console.log('done');
console.log(addrList);
//此处需要使用setTimeout
//否则 console.log 和JSON.stringify的结果不一样
setTimeout(function(){
var strData = JSON.stringify(addrList);
console.log(strData);
$.ajax({
type : 'POST',
url: '',
data: {
list:JSON.stringify(addrList)
},
dataType: 'json'
}).done(function(json) {
}).fail(function() {
});
}, 100);
});
})()
</script>
</html>
阅读全文
0 0
- 百度批量地址逆解析
- 百度逆地址解析
- 【百度地图API】批量地址解析与批量反地址解析(带商圈数据)
- 百度地图逆地址解析
- 使用百度地图API 逆地址解析
- 百度地图定位+逆地址解析+导航
- 百度地图地址解析
- 百度地图地址解析
- 应用百度地图逆地址解析:经纬度-->地址
- 百度云真实地址解析
- 利用百度Geocoding API实现逆地址解析
- net 腾讯地图 百度地图逆地址解析
- HtmlAgilityPack 爬虫批量获取百度音乐下载地址一
- [C#源代码]百度网盘地址批量转换工具
- matlab 使用百度POI函数批量提取地址
- Java解析百度地址解析访问远程url
- C# 正则表达式匹配多层嵌套的括号里面的内容 百度api逆地址解析
- java程序调用百度Geocoding API逆地址解析通过经纬度查询位置
- Java NIO 系列教程(转) java nio
- 由typedef和函数指针引起的危机
- 使用gulp和browser-sync实现自动刷新浏览器
- 《java多线程编程技术核心》读书笔记7
- Kotlin on Android FAQ
- 百度批量地址逆解析
- tensorflow实现LinearRegression
- 分针网—IT教育:ajax提交表单
- Mysql开发规范
- Hybrid app开发从了解到深入
- 理解IoC、aop的简易例子
- 一款很好用的excel导出工具
- 解决三星手机拍照旋转导致崩溃的问题
- PagerAdapter调用顺序