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

       POI搜索有三种方式,根据范围和检索词发起范围检索poiSearchInbounds,城市poi检索poiSearchInCity,周边检索poiSearchNearBy。

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

public int poiSearchNearBy(java.lang.String key, GeoPoint pt, int radius)

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

异步函数,返回结果在MKSearchListener里的onGetPoiResult方法通知
参数:
key - 关键词
pt - 中心点地理坐标
radius - 半径,单位:米
返回:
成功返回0,否则返回-1
Demo: 检索天安门周边5000米之内的KFC餐厅

[java]  view plain copy
  1. mMKSearch.poiSearchNearBy("KFC"new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6)), 5000);  




实现MySearchListener的onGetPoiResult,并展示检索结果:
[java]  view plain copy
  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 plain copy
  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. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值