高德地图 爬坑之旅
這一節(jié)主要是針對高德地圖的定位來說,我的需求是利用高德地圖來做詳細的定位,那么因為它的定位是異步執(zhí)行,并且定位成功后?做回調(diào),這里我就在想,把數(shù)據(jù)拿出來,做全局共享。
因為是第一次接觸,所以我傻乎乎的直接利用塊作用域去取值,結(jié)果就是,在值還沒有取回來之前,函數(shù)已經(jīng)執(zhí)行完畢,導致后面的數(shù)據(jù)并沒有被返回,為此我為這個問題糾結(jié)了2個小時,在朋友的提示下,
異步
對的,異步,那么我嘗試使用Promse來包容它的運行,然后在需要用到它的時候配合async/await來等待它完成取值,不言而喻。
完美解決了我取值的要求
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({// 是否使用高精度定位,默認:trueenableHighAccuracy: true,// 設(shè)置定位超時時間,默認:無窮大timeout: 10000,// 定位按鈕的停靠位置的偏移量,默認:Pixel(10, 20)buttonOffset: new AMap.Pixel(10, 20),// 定位成功后調(diào)整地圖視野范圍使定位位置及精度范圍視野內(nèi)可見,默認: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) {// 定位出錯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é)
- 上一篇: 多线程速成
- 下一篇: 无穷之旅:关于无穷大的文化史 (伊莱·马