百度api查询多个地址的经纬度的问题
2018-06-24 01:37:00来源:未知 阅读 ()
在使用百度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比较复杂,需要二次循环,不像上面例子这么简单,所以才使用的这种方法。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 前端笔记之微信小程序(三)GET请求案例&文件上传和 2019-08-14
- 使用百度echarts仿雪球分时图(一) 2019-08-14
- vue集成百度富文本编辑器 2019-08-14
- 网页百度地图api,支持位置偏移 2019-08-14
- JavaScript动态加载script方式引用百度地图API 拓展--- 2019-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash