无奈~用百度地图根据多个地址获取经纬度出现问题!大哥大姐看一下吧,不知道怎么做了

看图吧
图片描述

图片描述

图片描述

图片描述

值虽然是能够得到了,但是我刷新刷新刷新之后这两个值就会随机变换,根本不知道哪个是“重庆”的,哪个是“贵阳”的,各位老哥有什么办法吗?我按着网上的一些说法写了回调、Promise、闭包这些都没有用啊,有遇到过的吗?
ddaa16fcecb34632b9c6c4f950c52f2a.jpg

贴一份源码:

<!DOCTYPE html>
<html lang="en">

<title>根据地址查询经纬度</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>

</head>
<body>

<div id="container"></div>

</body>
<script type="text/javascript">

var map = new BMap.Map("container");
var localSearch = new BMap.LocalSearch(map);
var address=['重庆','贵阳']
for(let i=0;i<address.length;i++){
    fn(i,function (d){
        console.log(d)
    })
}
function fn(i,callback){
        var keyword = address[i];
        localSearch.setSearchCompleteCallback(
            function (searchResult) {
                var poi = searchResult.getPoi(0);
                var result = poi.point.lng + "," + poi.point.lat;
                callback(result)
            }
        );
        localSearch.search(keyword); 
    }

</script>
</html>

阅读 5.2k
3 个回答

你数组里面别就存俩名字了,你存一个对象{重庆:[]},{贵阳:[]},赋值的时候就找对应的赋值,那就不会错了啊

终于解决好了,找了好久,十分感谢这个几年前的老哥的回复,没想到今天恰恰能用到
图片描述

其实就像他说的一样,反复回调并且判断就可以了,不要使用for循环,否则就会不按顺序随机输出坐标,导致情绪奔溃无解无奈
图片描述

刚刚看了文档,直接传入address就行了

setSearchCompleteCallback() none 设置检索结束后的回调函数。参数:results: LocalResult
或 Array 如果是多关键字检索,回调函数参数为LocalResult的数组,数组中的结果顺序和检索中多关键字数组中顺序一致

以下的不重要了,除非你一定要一个一个的查询地址


setSearchCompleteCallback的返回值里面包含keyword,对应传入的address值,可以通过这个建立与传入地址的关系
或者可以在chrome下执行下面的代码,结果按顺序对应address里面的变量,不过一次只发送一个地址请求,好处是得到的结果与address变量里面的值一一对应

address.reduce((a,addr)=>a.then(data=>new Promise((resolve, reject)=>{
    localSearch.setSearchCompleteCallback(searchResult=>{
        var poi = searchResult.getPoi(0);
        var result = poi.point.lng + "," + poi.point.lat;
        resolve([...data, result]);
    });
    localSearch.search(addr);
})), Promise.resolve([])).then(data=>console.log(data));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题