var bm = new BMap.Map("l-map");
bm.centerAndZoom(ggPoint, 15);
var myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(strInput, function (point) {
if (point) {
//////
} else {
alert("您选择地址没有解析到结果!");
}
});
////在这里获取point
首先你应该需要知道异步流程:
异步已经把当前的任务挂起了,就相当于异步任务和同步任务已经分离成了两条分支(当然真正原理上异步任务会插入到同步任务中,javascript异步模型请参考:《javascript Event loop》)
你想要在异步任务后获取point,只能在异步任务的后面获取,而不应该在同步任务的后面获取:
所以你希望在getPoint的同步代码里是拿不到point的,但是可以使用异步的库,来让代码扁平化(看起来像同步任务一样,但其实只是把异步任务给封装起来了),比如ES6的Promise:
关于Promise可以参考我的这篇文章:《JavaScript异步编程(1)- ECMAScript 6的Promise对象》。
因为Promise是ES6规范下的,需要在很新的浏览器环境下运行,所以我也编写了相应的兼容版Promise,实现了低版本浏览器的Promise,并且和原生Promise API达到了95%的相似度:Github - Promise。