package com.android.mybaidu;
import android.os.Bundle;
import android.widget.Toast;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.PoiOverlay;
public class Main extends MapActivity {
/** Called when the activity is first created. */
// 添加百度地图的相关控件
private MapView mapView;
private BMapManager bMapManager;// 加载地图的引擎
// 百度地图的key
// 在百度地图上添加一些控件,比如是放大或者缩小的控件
private MapController mapController;
private String keyString="P56aGeQVKbcUexzEGRdHGG8j";
private MKSearch mkSearch;//用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) this.findViewById(R.id.bmapView);
bMapManager = new BMapManager(Main.this);
// 必须要加载key
bMapManager.init(keyString, new MKGeneralListener() {
@Override
public void onGetPermissionState(int arg0) {
// TODO Auto-generated method stub
if (arg0 == 300) {
Toast.makeText(Main.this, "输入的Key有错!请核实!!", 1).show();
}
}
@Override
public void onGetNetworkState(int arg0) {
// TODO Auto-generated method stub
}
});
/*initMapActivity(arg0)是MapActivity的一个方法,
* MapActivity管理显示MapView中Activity 处理逻辑的基础类,
* initMapActivity初始化这个类
*/
this.initMapActivity(bMapManager);
mkSearch=new MKSearch();
mkSearch.init(bMapManager, new MySearchListener() );
mapView.getController().setCenter(new GeoPoint((int) (32.574 * 1E6),
(int) (116.785 * 1E6)));
//第一个参数是查询的名称,第二个参数是构建一个GeoPoint点,第三个参数是查询的半径
mkSearch.poiSearchNearBy("KFC", new GeoPoint((int) (32.574 * 1E6),
(int) (116.785 * 1E6)), 5000);
}
public class MySearchListener implements MKSearchListener{
public MySearchListener(){
}
@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 onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
if (arg0 == null) {
return;
}
//构建的一个查询点
PoiOverlay poiOverlay=new PoiOverlay(Main.this, mapView);
poiOverlay.setData(arg0.getAllPoi());//获得符合条件的点
mapView.getOverlays().add(poiOverlay);
mapView.invalidate();//刷新地图
}
@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
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (bMapManager != null) {
bMapManager.destroy();
bMapManager = null;
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if (bMapManager != null) {
bMapManager.start();
}
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if (bMapManager != null) {
bMapManager.stop();
}
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
主要知识点:
(1)用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索:
private MKSearch mkSearch;
mkSearch=new MKSearch();
(2)加载MKSearchListener接口,该接口返回poi搜索,公交搜索,驾乘路线,步行路线结果:
mkSearch.init(bMapManager, new MKSearchListener(){。。。}; );
(3)第一个参数是查询的名称,第二个参数是构建一个GeoPoint点,第三个参数是查询的半径:
mkSearch.poiSearchNearBy("KFC", new GeoPoint((int) (32.574 * 1E6), (int) (116.785 * 1E6)), 5000);