ps:(1.地圖應用必定要在真機測試;php
2.Design By:Android Stdio;java
3.百度地圖官方參考連接(http://developer.baidu.com/map/index.php?title=androidsdk);android
4.若有不足,請指出,謝謝);api
下面咱們來研究百度地圖:app
【1】首先:在使用百度地圖的時候須要獲得百度地圖官方提供的AK碼,具體如何得到,請參考(http://developer.baidu.com/map/index.php?title=androidsdk/guide/key)eclipse
【2】獲得AK碼之後須要下載百度官方提供的jar包以及so文件,具體請參考(http://lbsyun.baidu.com/sdk/download?selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool)ide
【3】獲得jar包以及so文件後須要進行在項目中的加載:佈局
------------------------------------------------華麗分割線---------------------------------------ui
小編使用的Android Stdio進行編寫的,因此講述一下as的加載jar包以及so文件:
【添加jar包】-正如圖片所看,首先應該把對應的jar包放到項目的libs文件夾下,而後須要在這個項目下的,添加這條語句:,不然你的jar包將沒法使用
【添加so文件】-小編根據蒐集資料,發現有這樣一個方法,經測試可用,這個方法源自國外的Kyle Thielk的博客
在main文件夾下建立jinLibs,而後把armeabi複製到這個文件夾下面便可
【4】添加密鑰配置權限
以上代碼參考(http://developer.baidu.com/map/index.php?title=androidsdk/guide/hellobaidumap)
【5】添加xml佈局文件
1 <com.baidu.mapapi.map.MapView 2 android:id="@+id/bmapView" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:clickable="true" />
【6】書寫java代碼(代碼實現【1.建立地圖,2.顯示衛星地圖,3.顯示實時路況】)
1 public class MainActivity extends ActionBarActivity { 2 private MapView mapView=null; 3 private BaiduMap mBaiduMap=null; 4 @Override 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 /* 8 *注意使用SDK各組件以前初始化Context信息,傳入ApplicationContext 9 *注意該方法要在setContentView以前實現 10 */ 11 SDKInitializer.initialize(getApplicationContext()); 12 setContentView(R.layout.activity_main); 13 initView(); 14 15 } 16 17 private void initView() { 18 mapView=(MapView)findViewById(R.id.bmapView); 19 mBaiduMap=mapView.getMap(); //從容器中獲得地圖 20 MapStatusUpdate msu= MapStatusUpdateFactory.zoomTo(15.0f); //設置地圖的起始標尺 21 mBaiduMap.setMapStatus(msu); 22 } 23 24 @Override 25 protected void onDestroy() { 26 super.onDestroy(); 27 mapView.onDestroy(); 28 } 29 30 @Override 31 protected void onResume() { 32 super.onResume(); 33 mapView.onResume(); 34 } 35 36 @Override 37 protected void onPause() { 38 super.onPause(); 39 mapView.onPause(); 40 } 41 42 /* 43 *上下文菜單 44 */ 45 @Override 46 public boolean onCreateOptionsMenu(Menu menu) { 47 // Inflate the menu; this adds items to the action bar if it is present. 48 getMenuInflater().inflate(R.menu.menu_main, menu); 49 return true; 50 } 51 /* 52 *複寫菜單選項的點擊事件 53 */ 54 @Override 55 public boolean onOptionsItemSelected(MenuItem item) { 56 switch (item.getItemId()) 57 { 58 case R.id.id_map_common: 59 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); 60 break; 61 case R.id.id_map_site: 62 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); 63 break; 64 case R.id.id_map_traffic: 65 if(mBaiduMap.isTrafficEnabled()){ 66 mBaiduMap.setTrafficEnabled(false); 67 item.setTitle("實時交通(Off)"); 68 }else 69 { 70 mBaiduMap.setTrafficEnabled(true); 71 item.setTitle("實時交通(On)"); 72 } 73 break; 74 } 75 76 return super.onOptionsItemSelected(item); 77 } 78 }
【7】書寫menu_main.xml
<item android:id="@+id/id_map_common" android:title="@string/map_common" app:showAsAction="never" /> <item android:id="@+id/id_map_site" android:title="@string/map_site" app:showAsAction="never" /> <item android:id="@+id/id_map_traffic" android:title="@string/map_traffic" app:showAsAction="never" />
【8】書寫string.xml
<string name="map_common">普通地圖</string> <string name="map_site">衛星地圖</string> <string name="map_traffic">實時交通(Off)</string>
【9】項目完成,效果圖以下: