Android使用百度地图的注意点

/*

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

0.不要参考官方的网页示例

很奇怪,他的官网的使用示例更新不及时。

下载api的时候,里面有一个demo。最好参看这个。


1.需要申请key。并且在Manifest中申明这个key:

在application标签中声明meta-data。

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


2. 在代码中使用了百度地图,同时也使用了混淆代码。

工程目录下的:proguard-project.txt 中的末尾添加如下文字:

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

如果不添加,会在安装了app后,使用百度地图的时候有错误,应该是baidu 之类的字被混淆了,然后找不到了:

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


3. PoiSearch 这个类,按照官方文档是有的,但是在2.4.2的api中,已经找不到了。改用MKSearch类。

使用方法如下:

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
			
		}
		
	}


你可能感兴趣的:(android,百度地图,PoiSearch)