主要的類和方法
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包...