編輯:關於Android編程
以百度api為基礎
復制
要定義的變量
private BaiduMap mBaiduMap;
private MapView mMapView;
private LocationClient mLocationClient;
private boolean isFirstIn = true;
初始化
mMapView= (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
各部分實現的功能
1.
//在使用SDK各組件之前初始化context信息,傳入ApplicationContext
//注意該方法要再setContentView方法之前實現
SDKInitializer.initialize(getApplicationContext());
把地圖的生命周期和activity的生命周期綁定起來
@Override
protected void onStart() {
super.onStart();
mBaiduMap.setMyLocationEnabled(true);
if(!mLocationClient.isStarted())
mLocationClient.start();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity執行onResume時執行mMapView. onResume (),實現地圖生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity執行onPause時執行mMapView. onPause (),實現地圖生命周期管理
mMapView.onPause();
}
實現option點擊轉換地圖模式
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 1, 0, 普通地圖);
menu.add(0, 2, 0, 衛星地圖);
menu.add(0, 3, 0, 實時交通(off));
return super.onCreateOptionsMenu(menu);
}
設置option的點擊事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
//普通地圖
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
break;
case 2:
//衛星地圖
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
break;
case 3:
if(mBaiduMap.isTrafficEnabled()){
mBaiduMap.setTrafficEnabled(false);
item.setTitle(實時交通(off));
}else{
mBaiduMap.setTrafficEnabled(true);
item.setTitle(實時交通(on));
}
break;
}
return super.onOptionsItemSelected(item);
}
在地圖上添加標識物
//定義Maker坐標點
LatLng point = new LatLng(39.963175, 116.400244);
//構建Marker圖標
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher);
//構建MarkerOption,用於在地圖上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地圖上添加Marker,並顯示
mBaiduMap.addOverlay(option);
設置gps定位
要用到的類
LocationClient
BDLocationListener
(1)
MyLocationListener myLocationListener = new MyLocationListener();
mLocationClient = new LocationClient(getApplicationContext()); //聲明LocationClient類
mLocationClient.registerLocationListener(myLocationListener); //注冊監聽函數
(2)利用LocationClientOption 設置定位的屬性
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);//設置定位模式
option.setCoorType(bd09ll);//返回的定位結果是百度經緯度,默認值gcj02
option.setScanSpan(1000);//設置發起定位請求的間隔時間為5000ms
option.setIsNeedAddress(true);//返回的定位結果包含地址信息
option.setNeedDeviceDirect(true);//返回的定位結果包含手機機頭的方向
mLocationClient.setLocOption(option);
(3)監聽器的實現
private class MyLocationListener implements BDLocationListener{
@Override
public void onReceiveLocation(BDLocation location) {
// TODO Auto-generated method stub
MyLocationData data = new MyLocationData.Builder()
//設置經緯度
.accuracy(location.getRadius())
.latitude(location.getLatitude())
.longitude(location.getLongitude())
.build();
mBaiduMap.setMyLocationData(data);
//判斷第一次進入,定位到目前所在位置
if(isFirstIn){
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MapStatusUpdate msu =MapStatusUpdateFactory.newLatLng(latLng);
mBaiduMap.animateMapStatus(msu);
Toast.makeText(getApplicationContext(), location.getAddrStr(),3000).show();
isFirstIn = false;
}
}
}
所要加的權限
所要在application聲明的
Android 中的 Service按運行地點分類:1、本地服務(Local) 該服務依附在主進程上, 服務依附在主進程上而不是獨立的進程,這樣在一定程度上節約了資源,另
AsyncTask 資料上寫是android提供的輕量級的異步類 可以直接繼承AsyncTask 在類中實現異步操作 並提供接口反饋當
就像Button控件有監聽器一樣,動畫效果也有監聽器,只需要實現AnimationListener就可以實現對動畫效果的監聽,其中需要重載三個函數,就是下面的這幾個函數:
前言Runtime是一套比較底層的純C語言API,包含了很多底層的C語言API。在我們平時編寫的OC代碼中,程序運行時,其實最終都是轉成了Runtime的C語言代碼。Ru