看完本文後,喜歡安卓的親們可以接著看看http://blog.csdn.net/woshishuoshuoa/article/details/9858417哦
Google地圖開放性很好,可惜,可以值得參考的資料太少,而且Google改版後,對手機的版本要求也變了,部分介面對手機版本要求偏高,更值得一提的是部分介面居然還會抽風。。。不過,Google地圖的確做的很大耶很好,所以在簡單地學習了Google之後再來學習百度地圖的話,就會覺得很容易了,百度地圖很多東西就是從Google那學來的,不過由於開發性低,百度地圖很多東西都是做死了的,不允許其他人修改的,下面就簡單地聊一聊百度地圖吧~~~
學習百度地圖時,多看看百度地圖api官網http://developer.baidu.com/上面教你怎樣申請api key,怎樣擷取世界地圖,怎樣定位等等,說的都很詳細的,這裡小菜鳥就不多說什麼了,不過官網給的東西有些還需要自己動點腦筋整合一下,這樣吧,小菜鳥就貼出點代碼給大家看看吧,都是很簡單的列子哦~~~
http://developer.baidu.com/map/sdkandev-2.htm詳細地講解了如何擷取一個世界地圖~~~
擷取了世界地圖之後如何定位到自己當前的位置呢,只需在擷取世界地圖的基礎上修改MainActivity中的代碼如下即可:
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.MapController;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationOverlay;import com.baidu.platform.comapi.basestruct.GeoPoint;import android.os.Bundle;import android.util.Log;import android.app.Activity;public class MainActivity extends Activity {BMapManager mBMapMan = null; MapView mMapView = null;public LocationClient mLocationClient=null;public BDLocationListener myListener=new MyLocationListener();@Overrideprotected void onCreate(Bundle savedInstanceState) {//======================================================初始化地圖Activity、使用Key========================================super.onCreate(savedInstanceState); mBMapMan=new BMapManager(getApplication()); mBMapMan.init("4b605b48b3062e4687d0ada2ecd65a8e", null); //注意:請在試用setContentView前初始化BMapManager對象,否則會報錯 setContentView(R.layout.activity_main); mMapView=(MapView)findViewById(R.id.bmapsView); mMapView.setBuiltInZoomControls(true); //設定啟用內建的縮放控制項 MapController mMapController=mMapView.getController(); // 得到mMapView的控制權,可以用它控制和驅動平移和縮放 GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6)); //用給定的經緯度構造一個GeoPoint,單位是微度 (度 * 1E6) mMapController.setCenter(point);//設定地圖中心點 mMapController.setZoom(12);//設定地圖zoom層級 //===========================================================初始化地圖完成================================================mLocationClient=new LocationClient(getApplicationContext()); //聲明LocationClient類mLocationClient.registerLocationListener(myListener);//註冊監聽函數LocationClientOption option=new LocationClientOption();option.setOpenGps(true);option.setAddrType("all");//返回的定位結果包含地址資訊option.setCoorType("bd0911");//返回的定位結果是百度經緯度,預設值gcj02option.setScanSpan(2000);option.disableCache(true);//禁止啟用緩衝定位option.setPoiDistance(1000);//poi查詢距離option.setPoiExtraInfo(true);//是否需要POI的電話和地址等詳細資料mLocationClient.setLocOption(option);mLocationClient.start();//啟動LocationClient!!!mMapView.getController().setZoom(15);if (mLocationClient!=null&&mLocationClient.isStarted()) {mLocationClient.requestLocation();}else {Log.d("LocSDK3", "location is null or not started");if (mLocationClient!=null&&mLocationClient.isStarted()) {mLocationClient.requestPoi();}}}class MyLocationListener implements BDLocationListener{@Overridepublic void onReceiveLocation(BDLocation location) {// TODO Auto-generated method stubGeoPoint geoPoint=new GeoPoint((int)(location.getLatitude()*1E6),(int)(location.getLongitude()*1E6));/* MyLocationOverlay只負責顯示我的位置, * 將擷取的位置資料放在一個LocationData結構中並用該結構設定MyLcationOverlay的資料來源, * 即可建立MyLocationOverlay*/MyLocationOverlay myLocationOverlay=new MyLocationOverlay(mMapView);LocationData locationData=new LocationData();locationData.latitude=location.getLatitude();locationData.longitude=location.getLongitude();locationData.direction=2.0f;myLocationOverlay.setData(locationData);mMapView.getOverlays().clear();mMapView.getOverlays().add(myLocationOverlay);mMapView.refresh();//在更新地圖覆蓋物後,需調用MapView.refresh() 使更新生效mMapView.getController().animateTo(geoPoint);}@Overridepublic void onReceivePoi(BDLocation arg0) {// TODO Auto-generated method stub}}//===================================================重寫以下方法,管理API============================================@Override protected void onDestroy(){ mMapView.destroy(); if(mBMapMan!=null){ mBMapMan.destroy(); mBMapMan=null; } super.onDestroy(); } @Override protected void onPause(){ mMapView.onPause(); if(mBMapMan!=null){ mBMapMan.stop(); } super.onPause(); } @Override protected void onResume(){ mMapView.onResume(); if(mBMapMan!=null){ mBMapMan.start(); } super.onResume(); } }
注意點:不要忘記在Mainfest中添加service
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service>
: