核心类: MKSearch和MKSearchListener
MKSearch用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索
int busLineSearch(String city, String busLineUid)
公交路线详细信息搜索 异步函数,返回结果在MKSearchListener里的onGetBusDetailResult方法通知
int drivingSearch(String startCity, MKPlanNode start, String endCity, MKPlanNode end)
驾乘路线搜索.
int drivingSearch(String startCity, MKPlanNode start, String endCity, MKPlanNode end, ArrayList<MKWpNode> wpNodes)
驾车路线搜索,可设置途经点 异步函数,返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
int geocode(String strAddr, String city)
根据地址名获取地址信息 异步函数,返回结果在MKSearchListener里的onGetAddrResult方法通知
static int getPoiPageCapacity()
返回每页容量
int goToPoiPage(int num)
获取指定页的的poi结果.
boolean init(BMapManager bmapMan, MKSearchListener listener)
初使化
int poiDetailSearch(String uid)
poi详细信息检索
int poiMultiSearchInbounds(String[] keys, GeoPoint ptLB, GeoPoint ptRT)
根据范围和检索词发起范围检索.
int poiMultiSearchNearBy(String[] keys, GeoPoint pt, int radius)
根据中心点、半径与检索词发起周边检索.
int poiSearchInbounds(String key, GeoPoint ptLB, GeoPoint ptRT)
根据范围和检索词发起范围检索.
int poiSearchInCity(String city, String key)
城市poi检索.
int poiSearchNearBy(String key, GeoPoint pt, int radius)
根据中心点、半径与检索词发起周边检索.
int reverseGeocode(GeoPoint pt)
根据地理坐标点获取地址信息 异步函数,返回结果在MKSearchListener里的onGetAddrResult方法通知
int setDrivingPolicy(int policy)
设置驾车路线规划策略.
static void setPoiPageCapacity(int num)
设置每页容量.
int setTransitPolicy(int policy)
设置路线规划策略.
int suggestionSearch(String key, String city)
联想词检索,根据模糊的不完备的检索词返回精确的建议搜索词 异步函数,返回结果在MKSearchListener里的onGetSuggestionResult方法通知
int transitSearch(String city, MKPlanNode start, MKPlanNode end)
公交路线搜索.
int walkingSearch(String startCity, MKPlanNode start, String endCity, MKPlanNode end)
步行路线搜索.
实现思路
初始化MKSearch类,通过init方法注册搜索结果的监听对象MKSearchListener,实现异步搜索服务。
通过自定义MySearchListener实现类,获得搜索结果。
注意,MKSearchListener只支持一个,以最后一次设置为准
1、实现目的:矩形区域加油站搜索
实现过程:
1、新建MKSearch的对象,然后用到public int poiSearchInbounds(String key,
GeoPoint ptLB,
GeoPoint ptRT)方法来进行对ptLB-ptRT矩形范围内key的搜索。返回结果在MKSearchListener里的onGetPoiResult方法通知。
2、由于MKSearchListener是一个接口,如果我们实现了这个接口就需要实现它里面的很多方法,这样影响代码修改的性能,我们新建了一个基类(BaseAdapter)来实现这个接口,然后新建一个MySearchListener来继承该类,仅实现我们需要的方法即可,此处需要用到onGetPoiResult方法来获的搜索结果。
3、对搜索结果进行展示:新建了一个PoiOverlay对象,然后给这个对象设置数据,并且将这个对象添加到overlays集合里面,然后刷新mapView。
4、为了使得我们点击poi有响应,我们设置了controller.enableClick(true);
// 让地图上的兴趣点可以被点击
5、设置Mainfest.xml的内容
注意:
poi检索结果每页容量默认情况下为10,可以通过setPoiPageCapacity设置,支持1-50(10)
翻页功能通过MKSearch类的goToPoiPage实现,该方法是异步函数,搜索成功后会调用注册的事件处理函数onGetPoiResult 返回查询页的结果。
支持分类搜索,例如mSearch.poiSearchInCity(“北京”, “娱乐”)
实现结果:
点击某个点,弹出吐司显示相应加油站名称。
BaseActivity .java
package huaxa.it.map;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.map.MKEvent;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;