Android百度定位API使用方法

package com.map;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.LocationData;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationOverlay;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class LocationActivity extends Activity{
	BMapManager bMapManager;
	MapView mapView;
	public LocationClient mLocationClient = null;
	public BDLocationListener myListener = new MyLocationListener();
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		bMapManager=new BMapManager(getApplication());
		bMapManager.init("0A1a131b800cea086f14cc941981e9b2", null); 
		setContentView(R.layout.activity_location);
		mapView=(MapView)findViewById(R.id.bmapsView_location);
		//:LocationClient类必须在主线程中声明。需要Context类型的参数。
		mLocationClient=new LocationClient(this);
		注册监听函数
		mLocationClient.registerLocationListener(myListener);
		/*
		 * 
		 * 设置定位参数包括:定位模式(单次定位,定时定位),返回坐标类型,是否打开GPS等等
		 * 
		 * */
		LocationClientOption option = new LocationClientOption();
		option.setOpenGps(true);
		option.setAddrType("all");//返回的定位结果包含地址信息
		option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02
		//不设置扫描间隔就是只定位一次,设置发起定位请求的间隔时间为2000ms
		option.setScanSpan(2000);
		option.disableCache(true);//禁止启用缓存定位
		option.setPoiNumber(5);	//最多返回POI个数	
		option.setPoiDistance(1000); //poi查询距离		
		option.setPoiExtraInfo(true); //是否需要POI的电话和地址等详细信息	
		
		mLocationClient.setLocOption(option);
		mLocationClient.start();//如果没有Start,就无法显示地图
		mapView.getController().setZoom(15);
		//注册位置提醒监听事件后,可以通过SetNotifyLocation 来修改位置提醒设置,修改后立刻生效。
		
		/*发起定位请求。请求过程是异步的,定位结果在监听函数onReceiveLocation中获取 */
		if (mLocationClient!=null&&mLocationClient.isStarted()) 
			mLocationClient.requestLocation();
		else 
			Log.d("LocSDK3", "Locationclient is null or not started");	
			/*发起POI查询请求。请求过程是异步的,定位结果在上面的监听函数onReceivePoi中获取。
			 * 
			 * */
		
		if (mLocationClient != null && mLocationClient.isStarted())
			mLocationClient.requestPoi();
		
	}
	
	/*实现BDLocationListener接口
	BDLocationListener接口有2个方法需要实现:
	1.接收异步返回的定位结果,参数是BDLocation类型参数。
	2.接收异步返回的POI查询结果,参数是BDLocation类型参数。*/
	class MyLocationListener implements BDLocationListener{

		@Override
		public void onReceiveLocation(BDLocation location) {
			
			GeoPoint geoPoint=new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6));
			
			MyLocationOverlay myLocationOverlay=new MyLocationOverlay(mapView);
			LocationData locationData=new LocationData();
			locationData.latitude=location.getLatitude();
			locationData.longitude=location.getLongitude();
			locationData.direction=2.0f;
			myLocationOverlay.setData(locationData);
			
			mapView.getOverlays().clear();
			mapView.getOverlays().add(myLocationOverlay);
			mapView.refresh();
			mapView.getController().animateTo(geoPoint);
		
		}

		@Override
		public void onReceivePoi(BDLocation arg0) {
			
		}
	}
	
	//---------------------
		@Override  
		protected void onDestroy(){  
		        mapView.destroy();  
		        if(bMapManager!=null){  
		        	bMapManager.destroy();  
		        	bMapManager=null;  
		        }  
		        super.onDestroy();  
		}  
		@Override  
		protected void onPause(){  
			mapView.onPause();  
		        if(bMapManager!=null){  
		        	bMapManager.stop();  
		        }  
		        super.onPause();  
		}  
		@Override  
		protected void onResume(){  
			mapView.onResume();  
		        if(bMapManager!=null){  
		        	bMapManager.start();  
		        }  
		       super.onResume();  
		}  
}

这是android 百度API使用要点

http://blog.youkuaiyun.com/gf771115/article/details/8208841

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值