百度地圖__定位顯示在地圖上

   主要的類和方法

       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包...


     截圖如下


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章