最近在使用百度地图安卓API的时候发现一个问题,有一段定位的代码无法进行定位。这个问题很奇怪,因为在整个应用的其它部分也有调用定位的代码,都能够成功定位,但是惟独这里不行。
先简单介绍一下程序的设计,我们在界面上有一个按钮用于选择位置,点击按钮后会弹出一个对话框选择是在地图上选点还是自动定位当前位置,如果点了定位当前位置就会自动进行定位。
经过反复检查之后才发现问题的所在:传入定位函数参数的Context对象有问题。一般来说这种情况下我们都会把含有按钮的Activity作为Context对象参数传入,很不幸在弹出对话框之后,这个Context就已经失效了,所以百度地图才会无法定位。
解决的方法也很简单,直接传入全局Context即可,例如getApplicationContext()。