项目中集成了百度地图,遇到一个bug, 多个ViewController都有创建MapView的对象,在子页面中的地图只能缩放,不能四周拖动,时好时坏,有时候要等一段时间,地图就不能拖动了,只能缩放,一直没解决,也百度不出结果.
jianshuGif.gif
(子页面的地图,只能缩放,不能拖动)
其实问题在于在首页调用了百度地图的定位功能:
[_locService startUserLocationService];
但是在离开首页时,没有调用:
[_locService stopUserLocationService];
因为你的定位请求是实时不间断发出去的,最新的定位请求刚发出,还没来得及返回,就离开当前页面,但之后请求返回了,就在子页面中执行新的地图对象的操作命令,可能是唤醒了之前主页面的地图,所以当前页面的地图是不可拖动的.
如果不能销毁的界面,离开界面执行[mapView viewWillDisappear]后,不要在执行操作地图的代码(举个例子,比如有个网络请求之后要对地图操作的代码,因为你请求发出之后可能还没有返回,你却离开了当前界面(界面没销毁),但之后请求返回了,就去执行对地图操作的代码,我想此时可能就把开始的那个地图给唤醒了,那么下个界面的地图就不能拖动了,只有回到原来的界面之后才能拖动)。解决方法:可以设置一个bool类型的属性,视图也就是界面将要显示的时候设置为YES,将要离开的时候设置为NO,如果有需要请求或怎样之后要操作地图的代码,可以加一个判断,为YES的时候执行,为NO的时候不执行。