百度POI实现周边搜索及公交路线查询

public class PoiSearchActivity extends AppCompatActivity implements View.OnClickListener, OnGetPoiSearchResultListener, OnGetBusLineSearchResultListener { 
private MapView mMapView = null; 
BaiduMap mBaidumap;    
BusLineSearch mBusLineSearch;    
PoiSearch mPoiSearch;     
LatLng mCenterlLatLng = new LatLng(39.886332, 116.416707);     
Button mPoiSearchbtn;     
Button mBusLinebtn;      //Poi搜索结果     
PoiResult mPoiResult = null;      
String mBusLineUid = null;      
View view;      
@Override     
Protected void onCreate(Bundle savedInstanceState) {         
super.onCreate(savedInstanceState);         
LayoutInflater inflater = getLayoutInflater();         
view = inflater.inflate(R.layout.activity_poi_search, null);         
setContentView(view);         
mMapView = (MapView) findViewById(R.id.bmapView);         
mBaidumap = mMapView.getMap();         
initSearch();}     
 private void initSearch(){         
mPoiSearchbtn = (Button) findViewById(R.id.poiSearch);         
mBusLinebtn = (Button) findViewById(R.id.bussearch);         
mPoiSearchbtn.setOnClickListener(this);         
mBusLinebtn.setOnClickListener(this);          
mBusLineSearch = BusLineSearch.newInstance();         
mPoiSearch = PoiSearch.newInstance();}      
private void initPoiNearbySearchOption(){         
PoiNearbySearchOption poiNearbySearchOption = new PoiNearbySearchOption();        
 poiNearbySearchOption.location(mCenterlLatLng);         
poiNearbySearchOption.keyword("公交");         
poiNearbySearchOption.radius(1000);        
 mPoiSearch.searchNearby(poiNearbySearchOption);         
mPoiSearch.setOnGetPoiSearchResultListener(this);}      
private void initBusLineSearchOption() {         
if (mBusLineUid != null) {            
 BusLineSearchOption busLineSearchOption = new BusLineSearchOption();             
busLineSearchOption.city("北京市");            
 busLineSearchOption.uid(mBusLineUid);            
 mBusLineSearch.searchBusLine(busLineSearchOption);             
mBusLineSearch.setOnGetBusLineSearchResultListener(this);}}      
@Override    
 public void onClick(View v) {         
switch (v.getId()) {             
case R.id.poiSearch:                
 initPoiNearbySearchOption();                
 break;             
case R.id.bussearch:                 
initBusLineSearchOption();                 
break;}}      
@Override     
public void onGetPoiResult(PoiResult poiResult) {         
if (poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {             
Log.d("skyfin", "error");} else {
mBaidumap.clear(); //创建PoiOverlay            
 PoiOverlay overlay = new MyPoiOverlay(mBaidumap);//设置overlay可以处理标注点击事件             
mBaidumap.setOnMarkerClickListener(overlay);            
 overlay.setData(poiResult); //设置PoiOverlay数据             
overlay.addToMap(); //添加PoiOverlay到地图中             
overlay.zoomToSpan();             
this.mPoiResult = poiResult; }         
BusLineSearch pBusLineSearch = BusLineSearch.newInstance();        
 BusLineSearchOption pBusLineSearchOption = new BusLineSearchOption().city("北京").uid("UID");         
pBusLineSearch.searchBusLine(pBusLineSearchOption);         
pBusLineSearch.setOnGetBusLineSearchResultListener(new OnGetBusLineSearchResultListener() {             
@Override             
public void onGetBusLineResult(BusLineResult busLineResult) {  }  });}      
@Override     
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {      }//获得BusLineResults    
 @Override     
public void onGetBusLineResult(BusLineResult busLineResult) {          
if (busLineResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {             
 Snackbar.make(view, "由于百度的问题,POI搜索出来的POIINFO的type只为BUS_STATION, POINT, SUBWAY_STATION,没有BUS_LINE,导致有些功能不能使用,这里还是贴出来代码", Snackbar.LENGTH_SHORT).show(); } else {             
mBaidumap.clear();//显示在地图上             
BusLineOverlay pBusLineOverlay = new BusLineOverlay(mBaidumap);             
pBusLineOverlay.setData(busLineResult);             
pBusLineOverlay.addToMap();             
pBusLineOverlay.zoomToSpan(); }}      
private class MyPoiOverlay extends PoiOverlay {         
public MyPoiOverlay(BaiduMap baiduMap){             
super(baiduMap);}          
@Override         
public boolean onPoiClick(int index) {            
 super.onPoiClick(index);             
if (mPoiResult != null) {                 
List<PoiInfo> poiInfoList = mPoiResult.getAllPoi();                
 LayoutInflater inflater = getLayoutInflater();                 
View view = inflater.inflate(R.layout.poiresult_layout, null);                 
((TextView) view.findViewById(R.id.address)).setText("address: " + poiInfoList.get(index).address);                 
((TextView) view.findViewById(R.id.city)).setText("city: " + poiInfoList.get(index).city);                 
((TextView) view.findViewById(R.id.location)).setText("location: " + poiInfoList.get(index).location);                
 ((TextView) view.findViewById(R.id.name)).setText("name: " + poiInfoList.get(index).name);                
 ((TextView) view.findViewById(R.id.phoneNum)).setText("phoneNum: " + poiInfoList.get(index).phoneNum);                 
((TextView) view.findViewById(R.id.type)).setText("type: " + poiInfoList.get(index).type);                 
((TextView) view.findViewById(R.id.uid)).setText("uid: " + poiInfoList.get(index).uid);                 
Dialog dialog = new AlertDialog.Builder(PoiSearchActivity.this, R.style.Mystyle)                         
.setView(view)                        
 .setTitle("title")                        
 .create();                
 dialog.show();                 
if (poiInfoList.get(index).type == PoiInfo.POITYPE.BUS_LINE|| poiInfoList.get(index).type == PoiInfo.POITYPE.SUBWAY_LINE) {                     
Log.d("skyfin", "由于百度的问题,POI搜索出来的POIINFO的type只为BUS_STATION, POINT, SUBWAY_STATION,没有BUS_LINE,导致有些功能不能使用,这里还是贴出来代码");                              
mBusLineUid = poiInfoList.get(index).uid; }            
 return true; }}      
@Override     protected void onDestroy() {        
 super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理         
mMapView.onDestroy();         
mBusLineSearch.destroy();         
mPoiSearch.destroy(); }      
@Override     protected void onResume() {         
super.onResume();//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理         
mMapView.onResume();         
mBusLineSearch. onResume();        
 mPoiSearch. onResume(); }     
 @Override    
 protected void onPause() {         
super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理         
mMapView.onPause();         
mBusLineSearch. onPause();         
mPoiSearch. onPause();} } 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值