使用的百度地图。必须先使用百度地图获取目标位置和使用百度地图获取目标位置,然后在通过百度地图的获取我和目标的位置。由于异步的原因,所以我使用了定时器解决,不过性能肯定不好,如何使用async await或者promise代替定时器呢?代码片段如下: // 获取目标位置 var myGeo = new BMap.Geocoder(); // 根据中地址名 查经纬度 myGeo.getPoint(scope.targetname, function(point){ if (point) { scope.target = point; }else{ toast("您选择地址没有解析到结果!"); } }, scope.cityname);// 获取我的位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ if(this.getStatus() == BMAP_STATUS_SUCCESS){ // alert('您的位置:'+r.point.lng+','+r.point.lat); scope.myadd = new BMap.Point(r.point.lng,r.point.lat); // console.log(scope.myadd,"我的位置") } else { alert("定位失败"); } },{enableHighAccuracy: true}) // 获取我和目标的位置 setTimeout(function(){ if(scope.myadd!=""&&scope.target!=""){ var map = new BMap.Map("l-map"); map.centerAndZoom(new BMap.Point(scope.target.lng,scope.target.lat), 11); var walking = new BMap.WalkingRoute(map, {renderOptions: {map: map, panel: "r-result", autoViewport: true}}); walking.search(scope.myadd, scope.target); } }, 1000);
3 回答
倚天杖
TA贡献1828条经验 获得超3个赞
你可以把获取地理位置的封装成一个方法,返回一个promise对象,然后在外部 解析的地址的方法用asny,await去取获取地理位置 的方法,这样就可以实现同步了。
慕慕森
TA贡献1856条经验 获得超17个赞
简单来说这样做(以下是伪代码):
async getMyAndTargetPosition() {
const target = await getPosition(target);
const me = await getPosition(me);
return getPath(target, me);
}
getMyAndTargetPosition()
.then(path => {
// path
});
添加回答
举报
0/150
提交
取消