看完了http://blog.csdn.net/woshishuoshuoa/article/details/9853985后便学会了简单定位,那么如何进行搜索呢,在之前的项目上新建一个activity,代码如下:
package com.diecolor;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MKEvent;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.PoiOverlay;
import com.baidu.mapapi.search.MKAddrInfo;
import com.baidu.mapapi.search.MKBusLineResult;
import com.baidu.mapapi.search.MKDrivingRouteResult;
import com.baidu.mapapi.search.MKPoiInfo;
import com.baidu.mapapi.search.MKPoiResult;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.mapapi.search.MKSearchListener;
import com.baidu.mapapi.search.MKShareUrlResult;
import com.baidu.mapapi.search.MKSuggestionResult;
import com.baidu.mapapi.search.MKTransitRouteResult;
import com.baidu.mapapi.search.MKWalkingRouteResult;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LocationActivity extends Activity{
BMapManager mBMapMan = null;
MapView mMapView = null;
Button button;
EditText editText;
MKSearch mkSearch=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
//======================================================初始化地图Activity、使用Key========================================
super.onCreate(savedInstanceState);
mBMapMan=new BMapManager(getApplication());
mBMapMan.init("4b605b48b3062e4687d0ada2ecd65a8e", null);
//注意:请在试用setContentView前初始化BMapManager对象,否则会报错
setContentView(R.layout.location_main);
mMapView=(MapView)findViewById(R.id.locationmap_bmapsView);
mMapView.setBuiltInZoomControls(true);
//设置启用内置的缩放控件
MapController mapController=mMapView.getController();
//得到mMapView控制权,可以用它控制盒驱动平移和缩放
GeoPoint point=new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));
//用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
mapController.setCenter(point);//设置地图中心点
mapController.setZoom(12);//设置地图zoom级别
//===========================================================初始化地图完成================================================
//初始化 查询
mkSearch=new MKSearch();
mkSearch.init(mBMapMan, new MySearchListener());//注意,MKSearchListener只支持一个,以最后一次设置为准
editText=(EditText) findViewById(R.id.edit_locationmap);
button=(Button) findViewById(R.id.btn1_locationmap);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mkSearch.poiSearchInCity("南京", editText.getText().toString());
}
});
}
/*
* 通过初始化MKSearch类,注册搜索结果的监听对象MKSearchListener,
* 实现异步搜索服务。首先自定义MySearchListener实现MKSearchListener接口,
* 通过不同的回调方法,获得搜索结果
*/
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
}
//实现MySearchListener的onGetPoiResult,并展示检索结果:
@Override
public void onGetPoiResult(MKPoiResult res, int type, int error) {
// TODO Auto-generated method stub
// 错误号可参考MKEvent中的定义
if ( error == MKEvent.ERROR_RESULT_NOT_FOUND){
Toast.makeText(LocationActivity.this, "抱歉,未找到结果",Toast.LENGTH_LONG).show();
return ;
}
else if (error != 0 || res == null) {
Toast.makeText(LocationActivity.this, "搜索出错啦..", Toast.LENGTH_LONG).show();
return;
}
// 将poi结果显示到地图上
PoiOverlay poiOverlay = new PoiOverlay(LocationActivity.this, mMapView);
poiOverlay.setData(res.getAllPoi()); //把查询结果 放置到层中
mMapView.getOverlays().clear(); //清空以前查询的结果
mMapView.getOverlays().add(poiOverlay); //添加搜索结果的层
mMapView.refresh(); //刷新
//当ePoiType为2(公交线路)或4(地铁线路)时, poi坐标为空
for (MKPoiInfo mk : res.getAllPoi()) {
if (mk.pt!=null) {
mMapView.getController().animateTo(mk.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
}
}
//===================================================重写以下方法,管理API============================================
@Override
protected void onDestroy(){
mMapView.destroy();
if(mBMapMan!=null){
mBMapMan.destroy();
mBMapMan=null;
}
super.onDestroy();
}
@Override
protected void onPause(){
mMapView.onPause();
if(mBMapMan!=null){
mBMapMan.stop();
}
super.onPause();
}
@Override
protected void onResume(){
mMapView.onResume();
if(mBMapMan!=null){
mBMapMan.start();
}
super.onResume();
}
}
效果图:
喜欢安卓的亲们可以接着看看http://blog.csdn.net/woshishuoshuoa/article/details/9866327哦~~~