android POI搜索,附近搜索,周边搜索定位介绍

志不强者智不达,言不信者行不果。这篇文章主要讲述android POI搜索,附近搜索,周边搜索定位介绍相关的知识,希望能为你提供帮助。
        POI搜索有三种方式。依据范围和检索词发起范围检索poiSearchInbounds。城市poi检索poiSearchInCity,周边检索poiSearchNearBy。

下以周边检索为例介绍怎样进行检索并显示覆盖物PoiOverlay:

【android POI搜索,附近搜索,周边搜索定位介绍】
public int  poiSearchNearBy(java.lang.String key,  GeoPoint  pt, int radius)

依据中心点、半径与检索词发起周边检索. 

异步函数,返回结果在MKSearchListener里的onGetPoiResult方法通知
參数:
key - 关键词
pt - 中心点地理坐标
radius - 半径。单位:米
返回:
成功返回0,否则返回-1
Demo:  检索天安门周边5000米之内的KFC餐厅
[java]  view plaincopy
  1. mMKSearch.poiSearchNearBy("KFC",  new  GeoPoint((int)  (39.915  *  1E6),  (int)  (116.404  *  1E6)),  5000);    

android POI搜索,附近搜索,周边搜索定位介绍

文章图片



实现MySearchListener的onGetPoiResult,并展示检索结果:
[java]  view plaincopy
  1. public  void  onGetPoiResult(MKPoiResult  result,  int  type,  int  iError)  {   
  2.         if  (result  ==  null)  {   
  3.                 return;    
  4.         }   
  5.         PoiOverlay  poioverlay  =  new  PoiOverlay(MyMapActivity.this,  mMapView);    
  6.         poioverlay.setData(result.getAllPoi());    
  7.         mMapView.getOverlays().add(poioverlay);    
  8. }   




详细实现:[java]  view plaincopy
  1. package  xiaosi.baiduMap;    
  2.    
  3. import  android.os.Bundle;    
  4.    
  5. import  com.baidu.mapapi.BMapManager;    
  6. import  com.baidu.mapapi.GeoPoint;    
  7. import  com.baidu.mapapi.MKAddrInfo;    
  8. import  com.baidu.mapapi.MKDrivingRouteResult;    
  9. import  com.baidu.mapapi.MKPoiResult;    
  10. import  com.baidu.mapapi.MKSearch;    
  11. import  com.baidu.mapapi.MKSearchListener;    
  12. import  com.baidu.mapapi.MKTransitRouteResult;    
  13. import  com.baidu.mapapi.MKWalkingRouteResult;    
  14. import  com.baidu.mapapi.MapActivity;    
  15. import  com.baidu.mapapi.MapController;    
  16. import  com.baidu.mapapi.MapView;    
  17. import  com.baidu.mapapi.PoiOverlay;    
  18.    
  19. public  class  BaiduMapActivity  extends  MapActivity   
  20. {   
  21.         /**  Called  when  the  activity  is  first  created.  */   
  22.         private  BMapManager  mapManager  =  null;    
  23.         private  String  key  =  "1B79478DA01F7800AEA8602517A6D89B38151105";    
  24.         private  MapView  mapView  =  null;    
  25.    
  26.         @Override   
  27.         public  void  onCreate(Bundle  savedInstanceState)   
  28.         {   
  29.                 super.onCreate(savedInstanceState);    
  30.                 setContentView(R.layout.main);    
  31.                 mapManager  =  new  BMapManager(getApplication());    
  32.                 mapManager.init(key,  null);    
  33.                 super.initMapActivity(mapManager);    
  34.                 mapView  =  (MapView)  findViewById(R.id.mapsView);    
  35.                 mapView.setBuiltInZoomControls(true);   //  设置启用内置的缩放控件   
  36.                 MapController  mapController  =  mapView.getController();   //  得到mMapView的控制权,能够用它控制和驱动平移和缩放   
  37.                 mapController.setZoom(12);   //  设置地图zoom级别   
  38.                    
  39.                    
  40.                 MKSearch  mKSearch  =  new  MKSearch();    
  41.                 mKSearch.init(mapManager,  new  MySearchListener()); //  注意。MKSearchListener仅仅支持一个。以最后一次设置为准   
  42.                 mKSearch.poiSearchNearBy("KFC",  new  GeoPoint((int)  (39.915  *  1E6),   
  43.                                 (int)  (116.404  *  1E6)),  5000);    
  44.         }   
  45.    
  46.         public  class  MySearchListener  implements  MKSearchListener   
  47.         {   
  48.                 public  void  onGetAddrResult(MKAddrInfo  arg0,  int  arg1)   
  49.                 {}   
  50.    
  51.                 public  void  onGetDrivingRouteResult(MKDrivingRouteResult  arg0,  int  arg1)   
  52.                 {}   
  53.    
  54.                 public  void  onGetPoiResult(MKPoiResult  arg0,  int  arg1,  int  arg2)   
  55.                 {   
  56.                         if  (arg0  ==  null)  {   
  57.                                 return;    
  58.                         }   
  59.                         PoiOverlay  poioverlay  =  new  PoiOverlay(BaiduMapActivity.this,  mapView);    
  60.                         poioverlay.setData(arg0.getAllPoi());    
  61.                         mapView.getOverlays().add(poioverlay);    
  62.                 }   
  63.    
  64.                 public  void  onGetTransitRouteResult(MKTransitRouteResult  arg0,  int  arg1)   
  65.                 {}   
  66.    
  67.                 public  void  onGetWalkingRouteResult(MKWalkingRouteResult  arg0,  int  arg1)   
  68.                 {}   
  69.         }   
  70.    
  71.         @Override   
  72.         protected  boolean  isRouteDisplayed()   
  73.         {   
  74.                 return  false;    
  75.         }   
  76.    
  77.         @Override   
  78.         protected  void  onDestroy()   
  79.         {   
  80.                 if  (mapManager  !=  null)   
  81.                 {   
  82.                         mapManager.destroy();    
  83.                         mapManager  =  null;    
  84.                 }   
  85.                 super.onDestroy();    
  86.         }   
  87.    
  88.         @Override   
  89.         protected  void  onPause()   
  90.         {   
  91.                 if  (mapManager  !=  null)   
  92.                 {   
  93.                         mapManager.stop();    
  94.                 }   
  95.                 super.onPause();    
  96.         }   
  97.    
  98.         @Override   
  99.         protected  void  onResume()   
  100.         {   
  101.                 if  (mapManager  !=  null)   
  102.                 {   
  103.                         mapManager.start();    
  104.                 }   
  105.                 super.onResume();    
  106.         }   
  107. }  














    推荐阅读