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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:43   2473   0

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

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() {
  @Override
  public void onReceivePoi(BDLocation arg0) {
   // TODO Auto-generated method stub
  }

  @Override
  public 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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP