鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ 無奈~用百度地圖根據(jù)多個地址獲取經(jīng)緯度出現(xiàn)問題!大哥大姐看一下吧,不知道怎么做了

無奈~用百度地圖根據(jù)多個地址獲取經(jīng)緯度出現(xiàn)問題!大哥大姐看一下吧,不知道怎么做了

看圖吧
圖片描述

圖片描述

圖片描述

圖片描述

值雖然是能夠得到了,但是我刷新刷新刷新之后這兩個值就會隨機變換,根本不知道哪個是“重慶”的,哪個是“貴陽”的,各位老哥有什么辦法嗎?我按著網(wǎng)上的一些說法寫了回調(diào)、Promise、閉包這些都沒有用啊,有遇到過的嗎?
ddaa16fcecb34632b9c6c4f950c52f2a.jpg

貼一份源碼:

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

<title>根據(jù)地址查詢經(jīng)緯度</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>

回答
編輯回答
嘟尛嘴

你數(shù)組里面別就存?zhèn)z名字了,你存一個對象{重慶:[]},{貴陽:[]},賦值的時候就找對應(yīng)的賦值,那就不會錯了啊

2018年4月23日 19:16
編輯回答
北城荒

剛剛看了文檔,直接傳入address就行了

setSearchCompleteCallback() none 設(shè)置檢索結(jié)束后的回調(diào)函數(shù)。參數(shù):results: LocalResult
或 Array 如果是多關(guān)鍵字檢索,回調(diào)函數(shù)參數(shù)為LocalResult的數(shù)組,數(shù)組中的結(jié)果順序和檢索中多關(guān)鍵字?jǐn)?shù)組中順序一致

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


setSearchCompleteCallback的返回值里面包含keyword,對應(yīng)傳入的address值,可以通過這個建立與傳入地址的關(guān)系
或者可以在chrome下執(zhí)行下面的代碼,結(jié)果按順序?qū)?yīng)address里面的變量,不過一次只發(fā)送一個地址請求,好處是得到的結(jié)果與address變量里面的值一一對應(yīng)

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));
2017年2月22日 18:14
編輯回答
吢涼

終于解決好了,找了好久,十分感謝這個幾年前的老哥的回復(fù),沒想到今天恰恰能用到
圖片描述

其實就像他說的一樣,反復(fù)回調(diào)并且判斷就可以了,不要使用for循環(huán),否則就會不按順序隨機輸出坐標(biāo),導(dǎo)致情緒奔潰無解無奈
圖片描述

2018年1月1日 13:06