主要的类和方法
1) MyLocationData 定位数据 MyLocationData.Builder 定位数据构造器
2)MyLocationConfigeration 配置定位图层显示方式
- public MyLocationConfigeration(MyLocationConfigeration.LocationMode mode,boolean enableDirection,BitmapDescriptor customMarker)
-
mode
- 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态 -
enableDirection
- 是否允许显示方向信息 -
customMarker
- 设置用户自定义定位图标,可以为 null - 定义BaiduMap使用 BaiduMap baiduMap.setMyLocationConfigeration(MyLocationConfigeration LocConfig);
3)BaiduMap.setMyLocationConfigeration
百度Key
好像直接用Eclipse的debug模式下的key的SHA1申请 然后连数据线手机,直接调试又可以用。。。额 多试几次吧 如果key不能用的话。。。。
代码如下
public class MainActivity extends Activity {
private MapView mapView;
private LocationClient locationClient;
private BaiduMap baiduMap;
private boolean isFirstLoc=true;// 是否首次定位
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
init();
initLocation();
baiduMap=mapView.getMap();//获取控制权
baiduMap.setMyLocationEnabled(true);// 开启定位图层
locationClient.registerLocationListener(new MyLocationListener());
}
private void init(){
mapView=(MapView)findViewById(R.id.mapView);
button=(Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
if(button.getText().equals("开启")){
button.setText("关闭");
locationClient.start();
}else if(button.getText().equals("关闭")){
button.setText("开启");
locationClient.stop();
}
}
});
locationClient=new LocationClient(getApplicationContext());
}
private void initLocation(){
LocationClientOption option=new LocationClientOption();
option.setOpenGps(true);
option.setScanSpan(1000);
option.setCoorType("bd09ll"); // 设置坐标类型
locationClient.setLocOption(option);
}
private class MyLocationListener implements BDLocationListener{
@Override
public void onReceiveLocation(BDLocation location) {
if(location==null||mapView==null) return;
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(0).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
baiduMap.setMyLocationData(locData);
BitmapDescriptor bitmapMarker=BitmapDescriptorFactory.fromResource(R.drawable.icon_gcoding);
baiduMap.setMyLocationConfigeration(new MyLocationConfigeration(
MyLocationConfigeration.LocationMode.NORMAL,true,bitmapMarker));//marker为null 默认图标
if (isFirstLoc) {
isFirstLoc = false;
LatLng LL = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(LL);
baiduMap.animateMapStatus(u);
}
}
@Override
public void onReceivePoi(BDLocation arg0) {
// TODO Auto-generated method stub
}
}
@Override
protected void onPause() {
mapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
mapView.onResume();
super.onResume();
}
@Override
protected void onDestroy() {
// 退出时销毁定位
locationClient.stop();
// 关闭定位图层
baiduMap.setMyLocationEnabled(false);
mapView.onDestroy();
mapView = null;
super.onDestroy();
}
}
修改Manifest.xml什么的 加jar包...