Android使用百度地圖的注意點

/*

 http://my.oschina.net/lifj/blog/283063
 
*/

0.不要參考官方的網頁示例

很奇怪,他的官網的使用示例更新不及時。java

下載api的時候,裏面有一個demo。最好參看這個。
android


1.須要申請key。而且在Manifest中申明這個key:

在application標籤中聲明meta-data。api

<application>
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="das213jkad98321oklasme2i13oja" >
        </meta-data>
。。。。。
</application>


2. 在代碼中使用了百度地圖,同時也使用了混淆代碼。

工程目錄下的:proguard-project.txt 中的末尾添加以下文字:app

-keep class com.baidu.**{*;}
-keep class vi.com.gdi.bgl.**{*;}

若是不添加,會在安裝了app後,使用百度地圖的時候有錯誤,應該是baidu 之類的字被混淆了,而後找不到了:ide

java.lang.NoClassDefFoundError: com/baidu/platform/comjni/engine/AppEngine


3. PoiSearch 這個類,按照官方文檔是有的,可是在2.4.2的api中,已經找不到了。改用MKSearch類。

使用方法以下:this

private BMapManager mapManager = null;
	private MKSearch mkSearch = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mapManager = new BMapManager(getApplication());
		mkSearch = new MKSearch();
		mkSearch.init(mapManager, new MySearchListener());
		mkSearch.poiSearchNearBy("美食", new GeoPoint((int)(39.99537*1E6), (int)(116.311878*1E6)), 2000);
		
	}

	public class MySearchListener implements MKSearchListener {

		@Override
		public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onGetPoiDetailSearchResult(int arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onGetPoiResult(MKPoiResult mkPoiResult, int type, int error) {
			// TODO Auto-generated method stub
			if(error !=0 || mkPoiResult == null) {
				Toast.makeText(MainActivity.this, "抱歉,未找到結果", Toast.LENGTH_LONG).show();
				return;
			}
//			將Poi結果顯示到地圖上
			PoiOverlay poiOverlay = new PoiOverlay(MainActivity.this,mapView );
			poiOverlay.setData(mkPoiResult.getAllPoi());
			mapView.getOverlays().clear();
			mapView.getOverlays().add(poiOverlay);
			mapView.refresh();
			
			for(MKPoiInfo mkPoiInfo : mkPoiResult.getAllPoi()) {
				if(mkPoiInfo.pt != null) {
					mapView.getController().animateTo(mkPoiInfo.pt);
					break;
				}
			}
		}

		@Override
		public void onGetShareUrlResult(MKShareUrlResult arg0, int arg1,
				int arg2) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
	}
相關文章
相關標籤/搜索