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

Posted cxchanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 plaincopy
  1. mMKSearch.poiSearchNearBy("KFC"new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6)), 5000);  

技术分享


实现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. }  













以上是关于android POI搜索,附近搜索,周边搜索定位介绍的主要内容,如果未能解决你的问题,请参考以下文章

应用缺少POI数据,如何开发地点深度信息?

高德怎么定位一个地方搜附近的影院

Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作

百度地图实现普通地图定位周边搜索功能

# 如何圈出某点周边半径2公里的圆(用百度地图)?

设计一个保存地理位置的数据库