百度api查询多个地址的经纬度的问题
2018-03-05 23:29
155 查看
在使用百度api查询多个地址的经纬度的时候,由于百度api提供的经纬度查询方法是回调函数,并且后续操作必须等经纬度获取完成才能进行,问题就存在于怎么判断所有地点是否都回调完成了,问了之前的一个前端大佬同事(我是一只前端弱鸡),给我提供的思路,在百度api的回调函数里面再调一次自定义的回调函数,从而在自定义的函数里面进行判断所有地点是否都回调完成了。
下面是具体代码,
1 <script> 2 //所有待查询经纬度的地点 3 var allAddress=new Array("北京西站","成都东站","上海南站","西安北站"); 4 //回调前计数用 5 var callbackBefore = 0; 6 //回调后计数用 7 var callbackAfter = 0; 8 //存放经纬度 9 var geoCoord={}; 10 //循环所有地址 11 for (var i = 0; i < allAddress.length; i++) { 12 //先判断是否已经查询了经纬度(排重) 13 if (!(allAddress[i] in geoCoord)) { 14 //去调百度api,查经纬度了,先记个数 15 callbackBefore++; 16 GetPoint(allAddress[i], function (address, point) { 17 //回调回来了,经纬度,再记个数 18 callbackAfter++; 19 geoCoord[address] = point; 20 //判断回调之前的数目和回调之后的数目是否一样,一样就表示所有地址都查询完了 21 if (callbackBefore == callbackAfter) { 22 //去做你想做的操作了吧 23 //Travel(geoCoord); 24 return; 25 } 26 }); 27 } 28 29 } 30 //查询经纬度的函数 31 function GetPoint(address, callback) { 32 var local = new BMap.LocalSearch(address, 33 { 34 //智能搜索,这本来就是一个回调的方法 35 "onSearchComplete": function (obj) { 36 //存放经纬度 37 var point = []; 38 if (obj && obj.getPoi(0)) { 39 var pp = obj.getPoi(0).point; 40 point.push(pp.lng); 41 point.push(pp.lat); 42 //回调方法 43 callback(address, point); 44 } 45 } 46 }); 47 local.search(address); 48 } 49 </script>
我实际情况是那个地址allAddress比较复杂,需要二次循环,不像上面例子这么简单,所以才使用的这种方法。
相关文章推荐
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- 百度API经纬度和地址互相查询
- 百度API查询经纬度小页面
- 百度API从经纬度坐标到地址的转换服务
- java程序调用百度Geocoding API逆地址解析通过经纬度查询位置
- 一个可以地址和各种格式的经纬度查询互换的网址,支持百度、高德、Google等地图对比查询。
- 利用百度API获取地址经纬度
- 服务端java实现根据地址从百度API获取经纬度
- java根据地址获取百度API经纬度
- 百度API-根据地址获取经纬度
- 根据经纬度查询位置百度api
- 利用百度API(js),怎样通过地址获取经纬度
- 百度URL API实现地址 经纬度互相转换
- PHP地址反查返回经纬度 百度API
- .net根据经纬度获取地址(百度api)
- 位置信息类API调用的代码示例合集:中国省市区查询、经纬度地址转换、POI检索等
- .net根据经纬度获取地址(百度api)
- 百度api根据经纬度获取地址
- 利用百度地图Geocoding API获取特定地区或地址的经纬度信息
- 根据经纬度,找到地址信息(调用android地图百度API)