1.新建项目
将地图API添加进classpath中:

2.在activity_main.xml中添加一个MapView,用来显示地图:
1<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="fill_parent" 3 android:layout_height="fill_parent" 4 android:orientation="vertical" > 5 6 <!-- 添加显示地图的控件 --> 7 8 <com.baidu.mapapi.MapView 9 android:id="@+id/bmapView" 10 android:layout_width="fill_parent" 11 android:layout_height="fill_parent" 12 android:clickable="true" /> 13 14</LinearLayout>
3.修改AndroidManifest.xml文件,指定用户权限
1<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > 2 </uses-permission> 3 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > 4 </uses-permission> 5 <uses-permission android:name="android.permission.INTERNET" > 6 </uses-permission> 7 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > 8 </uses-permission> 9 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" > 10 </uses-permission> 11 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" > 12 </uses-permission> 13 <uses-permission android:name="android.permission.READ_PHONE_STATE" > 14 </uses-permission> 15 <uses-permission android:name="android.permission.CALL_PHONE" > 16 </uses-permission> 17 18 <supports-screens 19 android:anyDensity="true" 20 android:largeScreens="true" 21 android:normalScreens="false" 22 android:resizeable="true" 23 android:smallScreens="true" />
3.初始化地图引擎
1bMapManager = new BMapManager(MainActivity.this); 2 bMapManager.init(keyString, new MKGeneralListener() { 3 @Override 4 public void onGetPermissionState(int arg0) { 5 // TODO Auto-generated method stub 6 } 7 8 @Override 9 public void onGetNetworkState(int arg0) { 10 // TODO Auto-generated method stub 11 if (arg0 == 300) { 12 Toast.makeText(MainActivity.this, "输入的key有误,请核实!", 1) 13 .show(); 14 } 15 } 16 }); 17 initMapActivity(bMapManager); //初始化地图引擎
4.取得MapView组件
mapView = (MapView) findViewById(R.id.bmapView);
5.实例化search对象并添加监听
1mkSearch = new MKSearch(); 2mkSearch.init(bMapManager, new MySearchListener());
监听类:
1private class MySearchListener implements MKSearchListener { 2 3 @Override 4 public void onGetAddrResult(MKAddrInfo arg0, int arg1) { 5 // TODO Auto-generated method stub 6 7 } 8 9 @Override 10 public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { 11 // TODO Auto-generated method stub 12 13 } 14 15 @Override 16 public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) { 17 // TODO Auto-generated method stub 18 19 } 20 21 @Override 22 public void onGetPoiDetailSearchResult(int arg0, int arg1) { 23 // TODO Auto-generated method stub 24 25 } 26 27 @Override 28 public void onGetPoiResult(MKPoiResult result, int type, int isError) { 29 // TODO Auto-generated method stub 30 if(result == null){ 31 return; 32 } 33 PoiOverlay poiOverlay = new PoiOverlay(MainActivity.this, mapView); 34 poiOverlay.setData(result.getAllPoi()); 35 mapView.getOverlays().add(poiOverlay); 36 mapView.invalidate(); 37 } 38 39 @Override 40 public void onGetRGCShareUrlResult(String arg0, int arg1) { 41 // TODO Auto-generated method stub 42 43 } 44 45 @Override 46 public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) { 47 // TODO Auto-generated method stub 48 49 } 50 51 @Override 52 public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) { 53 // TODO Auto-generated method stub 54 55 } 56 57 @Override 58 public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) { 59 // TODO Auto-generated method stub 60 61 } 62 }
6.根据关键词、中心点、半径进行搜索。
1// 关键词,中心点,范围半径 2mkSearch.poiSearchNearBy("KFC", new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6)), 5000);
7.恢复、暂停、停止地图时地图引擎的操作
1 @Override 2 protected void onDestroy() { 3 // TODO Auto-generated method stub 4 super.onDestroy(); 5 if (bMapManager != null) { 6 bMapManager.destroy(); 7 bMapManager = null; 8 } 9 } 10 11 @Override 12 protected void onResume() { 13 // TODO Auto-generated method stub 14 super.onResume(); 15 if (bMapManager != null) { 16 bMapManager.start(); 17 } 18 } 19 20 @Override 21 protected void onPause() { 22 // TODO Auto-generated method stub 23 super.onPause(); 24 if (bMapManager != null) { 25 bMapManager.stop(); 26 } 27 }
完整代码:
1package com.example.baiduhellopoioverlay; 2 3import android.os.Bundle; 4import android.view.Menu; 5import android.widget.Toast; 6 7import com.baidu.mapapi.BMapManager; 8import com.baidu.mapapi.GeoPoint; 9import com.baidu.mapapi.MKAddrInfo; 10import com.baidu.mapapi.MKBusLineResult; 11import com.baidu.mapapi.MKDrivingRouteResult; 12import com.baidu.mapapi.MKGeneralListener; 13import com.baidu.mapapi.MKPoiResult; 14import com.baidu.mapapi.MKSearch; 15import com.baidu.mapapi.MKSearchListener; 16import com.baidu.mapapi.MKSuggestionResult; 17import com.baidu.mapapi.MKTransitRouteResult; 18import com.baidu.mapapi.MKWalkingRouteResult; 19import com.baidu.mapapi.MapActivity; 20import com.baidu.mapapi.MapView; 21import com.baidu.mapapi.PoiOverlay; 22 23public class MainActivity extends MapActivity { 24 25 private MapView mapView; 26 private BMapManager bMapManager; 27 private String keyString = "43D220AAB0DEC976D2EABC83CFC9EEE52BCCCA7A"; 28 private MKSearch mkSearch; 29 30 @Override 31 protected void onCreate(Bundle savedInstanceState) { 32 super.onCreate(savedInstanceState); 33 setContentView(R.layout.activity_main); 34 35 bMapManager = new BMapManager(MainActivity.this); 36 bMapManager.init(keyString, new MKGeneralListener() { 37 @Override 38 public void onGetPermissionState(int arg0) { 39 // TODO Auto-generated method stub 40 } 41 42 @Override 43 public void onGetNetworkState(int arg0) { 44 // TODO Auto-generated method stub 45 if (arg0 == 300) { 46 Toast.makeText(MainActivity.this, "输入的key有误,请核实!", 1) 47 .show(); 48 } 49 } 50 }); 51 initMapActivity(bMapManager); //初始化地图引擎 52 mapView = (MapView) findViewById(R.id.bmapView); 53 mkSearch = new MKSearch(); 54 mkSearch.init(bMapManager, new MySearchListener()); 55 56 // 关键词,中心点,范围半径 57 mkSearch.poiSearchNearBy("KFC", new GeoPoint((int) (39.915 * 1E6), 58 (int) (116.404 * 1E6)), 5000); 59 } 60 61 private class MySearchListener implements MKSearchListener { 62 63 @Override 64 public void onGetAddrResult(MKAddrInfo arg0, int arg1) { 65 // TODO Auto-generated method stub 66 67 } 68 69 @Override 70 public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { 71 // TODO Auto-generated method stub 72 73 } 74 75 @Override 76 public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) { 77 // TODO Auto-generated method stub 78 79 } 80 81 @Override 82 public void onGetPoiDetailSearchResult(int arg0, int arg1) { 83 // TODO Auto-generated method stub 84 85 } 86 87 @Override 88 public void onGetPoiResult(MKPoiResult result, int type, int isError) { 89 // TODO Auto-generated method stub 90 if(result == null){ 91 return; 92 } 93 PoiOverlay poiOverlay = new PoiOverlay(MainActivity.this, mapView); 94 poiOverlay.setData(result.getAllPoi()); 95 mapView.getOverlays().add(poiOverlay); 96 mapView.invalidate(); 97 } 98 99 @Override 100 public void onGetRGCShareUrlResult(String arg0, int arg1) { 101 // TODO Auto-generated method stub 102 103 } 104 105 @Override 106 public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) { 107 // TODO Auto-generated method stub 108 109 } 110 111 @Override 112 public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) { 113 // TODO Auto-generated method stub 114 115 } 116 117 @Override 118 public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) { 119 // TODO Auto-generated method stub 120 121 } 122 } 123 124 @Override 125 protected void onDestroy() { 126 // TODO Auto-generated method stub 127 super.onDestroy(); 128 if (bMapManager != null) { 129 bMapManager.destroy(); 130 bMapManager = null; 131 } 132 } 133 134 @Override 135 protected void onResume() { 136 // TODO Auto-generated method stub 137 super.onResume(); 138 if (bMapManager != null) { 139 bMapManager.start(); 140 } 141 } 142 143 @Override 144 protected void onPause() { 145 // TODO Auto-generated method stub 146 super.onPause(); 147 if (bMapManager != null) { 148 bMapManager.stop(); 149 } 150 } 151 152 @Override 153 public boolean onCreateOptionsMenu(Menu menu) { 154 // Inflate the menu; this adds items to the action bar if it is present. 155 getMenuInflater().inflate(R.menu.main, menu); 156 return true; 157 } 158 159 @Override 160 protected boolean isRouteDisplayed() { 161 // TODO Auto-generated method stub 162 return false; 163 } 164 165}
运行结果:
