百度地图androidAPI Android SDK v3.5.0

按照百度地图官网提供的API,前面完成了所谓的hello map的完成,现在要说的是接下来的一个功能,定位功能

初始化定位相关代码

/*** 初始化定位相关代码*/private void initLocation() {mLocationClient = new LocationClient(this);mLocationListener = new MyLocationListener();mLocationClient.registerLocationListener(mLocationListener);if (mLocationClient != null && !mLocationClient.isStarted()) {mLocationClient.requestLocation();mLocationClient.start();}LocationClientOption option = new LocationClientOption();option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);// 设置定位模式option.setOpenGps(true);option.setCoorType("bd09ll");// 设置坐标类型,返回的定位结果是百度经纬度,,默认值gcj02option.setIsNeedAddress(true);// 返回的定位结果包含地址信息option.setNeedDeviceDirect(true);// 返回的定位结果包含手机机头的方向option.setScanSpan(1000);// 每过1000毫秒进行一次请求。mLocationClient.setLocOption(option);}2.定位的监听器

/*** 实现实位回调监听*/ private class MyLocationListener implements BDLocationListener {/** * 定位成功以后的回调 */@Overridepublic void onReceiveLocation(BDLocation location) {MyLocationData data = new MyLocationData.Builder()//.accuracy(location.getRadius())//.latitude(location.getLatitude())//.longitude(location.getLongitude())//.build();// 设置定位数据mBaiduMap.setMyLocationData(data);mLatitude = location.getLatitude();mLongtitude = location.getLongitude();// 第一次定位时,将地图位置移动到当前位置if (isFirstIn) {LatLng latLng = new LatLng(location.getLatitude(),location.getLongitude());MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);mBaiduMap.animateMapStatus(msu);isFirstIn = false;//吐司Toast.makeText(MainActivity.this, location.getAddrStr(), 10).show();}}

其次定位这个功能,是非常消耗电量的,为了用户体验考虑。在onStart中开启定位,在onStop中关闭定位~~这样应用最小化时就不会一直在哪GPS请求定位了,、

@Overrideprotected void onResume() {super.onResume();// 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onStart() {super.onStart();/** * 开启定位 */mBaiduMap.setMyLocationEnabled(true);if (mLocationClient.isStarted())mLocationClient.start();}@Overrideprotected void onPause() {super.onPause();// 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();/** * 停止定位 */mBaiduMap.setMyLocationEnabled(false);mLocationClient.stop();}@Overrideprotected void onDestroy() {super.onDestroy();// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();}必须在AndroidManifest.xml配一个service

<serviceandroid:name="com.baidu.location.f"android:enabled="true"android:process=":remote" ></service>定位的核心代码

/** * 定位到我的位置 * 地图移动到我的位置,此处可以重新发定位请求,然后定位;* 直接拿最近一次经纬度,如果长时间没有定位成功,可能会显示效果不好 * */private void centerToMyLocation() {LatLng latLng = new LatLng(mLatitude, mLongtitude);MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);mBaiduMap.animateMapStatus(msu);}

版权声明:本文为博主原创文章,未经博主允许不得转载。

不给自己一点轻松的机会,好象世界的每个角落都需要自己的脚去留个痕迹,才叫人生。

百度地图androidAPI Android SDK v3.5.0

相关文章:

你感兴趣的文章:

标签云: