百度地图,加载顺序异步问题,用定时器解决
问题描述:譬如说我搜索万达广场,然后地图会展示万达广场并且会展示所在的街道(根据经纬度查询),但是当我点击重新定位的时候应该是要定位到我原来的位置,但是他还是定位到万达广场了,我再次点击定位才会回到我原来的位置
debug发现了问题,
就是在运行baiduMap这个方法到一半,也就是准备返回经纬度的时候,它却跳出改方法,往上面那个图的方法继续执行,用的还是老的经纬度,这样就导致了,搜索了万达以后,你点击重新定位还是万达,然后再次点击以后才会回到自己当前位置的问题。
解决:然后找了半天同步的方法都不行,原本想直接把重新定位逻辑(删除点,重新根据经纬度描点)写到原来方法里面,可是这样就动到了原来的代码,风险很大,后面想用回调,可是这个也会动到原来的代码,而且不只一个地方用到这个方法。后面问了前端,前端说写个定时器就可以解决还不用动到原来的逻辑
1.设置一个布尔值的全局变量,默认为false
2.然后再在方法里面设置为true
3然后再写一个定时器,1秒执行一次,如果为false就不执行里面的逻辑,然后继续定时器,然后当全局变量为true的时候就执行里面的逻辑,然后再关闭定时器就可以了。
没有想到还有这种操作,记录一下,与大家共勉