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

本文解决使用百度地图SDK时遇到的初始化异常问题,并提供了检查定位监听器执行的方法。通过在Application中配置SDK初始化,确保了程序入口的正确性。同时,介绍了在清单配置文件中添加服务的步骤,以及一个简单的定位Demo实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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.youkuaiyun.com/renguichao/article/details/7667245

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值