百度安卓地图学习(二)

看完了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哦~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值