关于使用百度地图过程中遇到的一些问题(一)

来源:互联网 发布:演讲书籍推荐知乎 编辑:程序博客网 时间:2024/06/16 06:26

最近在写一个关于百度地图相关的东西,把过程中遇到的一些问题整理如下:

1.Caused by: java.lang.IllegalStateException: you have not supplyed the global app context info from SDKInitializer.initialize(Context) function.


protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
//此处如果没有下面这句代码就会出现上面的异常,如果此处加了这句代码仍然出现了相同的异常信息,那么就需要在Application中配置,此处建议在application中配置
因为application中<span style="font-family: Arial, Helvetica, sans-serif;">onCreate()才是程序的真正入口,在application中配置之后不要忘了在清单配置文件中添加android:name="com.shijunqi.baiDuDemo.TApplication"</span>//SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_map);initView();}
在Application中配置
public class TApplication extends Application {<span style="white-space:pre"></span>@Override<span style="white-space:pre"></span>public void onCreate() {<span style="white-space:pre"></span>super.onCreate();<span style="white-space:pre"></span>SDKInitializer.initialize(this);<span style="white-space:pre"></span>}}

2.注册的定位监听器不执行

BDLocationListener listener = new BDLocationListener() {@Overridepublic void onReceivePoi(BDLocation arg0) {// TODO Auto-generated method stub}@Overridepublic void onReceiveLocation(BDLocation location) {Log.i("TAG", "BDLocationListener....");if (location == null || mbaiduMap == null) {return;}// 构造定位数据MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())//.direction(100)// 方向.latitude(location.getLatitude())//.longitude(location.getLongitude())//.build();// 设置定位数据mbaiduMap.setMyLocationData(locData);latitude = location.getLatitude();longitude = location.getLongitude();// 第一次定位的时候,那地图中心店显示为定位到的位置if (isFirstLoc) {isFirstLoc = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);mbaiduMap.animateMapStatus(msu);Toast.makeText(getApplicationContext(), location.getAddrStr(),Toast.LENGTH_SHORT).show();}}};

如果此监听器一直没有执行,那么首先需要检查的就是你的key配置的是否正确,再确认key配置正确的前提下再去看百度SDK所需要的权限是否都已经加上,如果确认这两部都没问题,就在清单配置文件中加上如下代码

 <service            android:name="com.baidu.location.f"            android:enabled="true"            android:process=":remote" >        </service>
附上百度定位的一个小Demo,链接如下

另外关于Application可以参考如下博客:http://blog.csdn.net/renguichao/article/details/7667245

0 0