高德地图 爬坑之旅
這一節(jié)主要是針對(duì)高德地圖的定位來(lái)說(shuō),我的需求是利用高德地圖來(lái)做詳細(xì)的定位,那么因?yàn)樗亩ㄎ皇钱惒綀?zhí)行,并且定位成功后?做回調(diào),這里我就在想,把數(shù)據(jù)拿出來(lái),做全局共享。
因?yàn)槭堑谝淮谓佑|,所以我傻乎乎的直接利用塊作用域去取值,結(jié)果就是,在值還沒(méi)有取回來(lái)之前,函數(shù)已經(jīng)執(zhí)行完畢,導(dǎo)致后面的數(shù)據(jù)并沒(méi)有被返回,為此我為這個(gè)問(wèn)題糾結(jié)了2個(gè)小時(shí),在朋友的提示下,
異步
對(duì)的,異步,那么我嘗試使用Promse來(lái)包容它的運(yùn)行,然后在需要用到它的時(shí)候配合async/await來(lái)等待它完成取值,不言而喻。
完美解決了我取值的要求
export function Map(AMap){return new Promise((resolve,rejects) => {var map = new AMap.Map('container', {resizeEnable: true})map.plugin('AMap.Geolocation', function() {var geolocation = new AMap.Geolocation({// 是否使用高精度定位,默認(rèn):trueenableHighAccuracy: true,// 設(shè)置定位超時(shí)時(shí)間,默認(rèn):無(wú)窮大timeout: 10000,// 定位按鈕的停靠位置的偏移量,默認(rèn):Pixel(10, 20)buttonOffset: new AMap.Pixel(10, 20),// 定位成功后調(diào)整地圖視野范圍使定位位置及精度范圍視野內(nèi)可見,默認(rèn):falsezoomToAccuracy: true, // 定位按鈕的排放位置, RB表示右下buttonPosition: 'RB'})geolocation.getCurrentPosition()AMap.event.addListener(geolocation, 'complete', onComplete)AMap.event.addListener(geolocation, 'error', onError)})function onComplete (data) {// data是具體的定位信息resolve(data);}function onError (data) {// 定位出錯(cuò)rejects(data);}}) }使用
import {Map} from '../map/map';site = async () => {try {let result = await Map(window.AMap);console.log(result);} catch(err) {console.log(err);}}?
獲得完美的結(jié)果
總結(jié)
- 上一篇: 多线程速成
- 下一篇: 无穷之旅:关于无穷大的文化史 (伊莱·马