簡(jiǎn)介:
- 目前百度地圖SDK所集成的檢索服務(wù)包括:POI檢索、公交信息查詢、線路規(guī)劃、地理編碼、行政區(qū)邊界數(shù)據(jù)檢索、在線建議查詢、短串分享(包括POI搜索結(jié)果分享、駕車/公交/騎行/步行路線規(guī)劃分享、反向地理編碼結(jié)果分享)。
- POI(Point of Interest),中文可以翻譯為“興趣點(diǎn)”。在地理信息系統(tǒng)中,一個(gè)POI可以是一棟房子、一個(gè)商鋪、一個(gè)郵筒、一個(gè)公交站等。
- 如果還沒有集成百度地圖,可以看下百度地圖總結(jié)第一篇環(huán)境集成和Hello BaiduMap
我們來看下怎么使用吧:
第一步,創(chuàng)建POI檢索實(shí)例
mPoiSearch = PoiSearch.newInstance();
第二步,創(chuàng)建POI檢索監(jiān)聽者;
OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener(){
public void onGetPoiResult(PoiResult result){
//獲取POI檢索結(jié)果
List<PoiInfo> allAddr = result.getAllPoi();
for (PoiInfo p: allAddr) {
Log.d("MainActivity", "p.name--->" + p.name +"p.phoneNum" + p.phoneNum +" -->p.address:" + p.address + "p.location" + p.location);
}
}
public void onGetPoiDetailResult(PoiDetailResult result){
//獲取Place詳情頁檢索結(jié)果
}
};
第三步,設(shè)置POI檢索監(jiān)聽者;
mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
第四步,發(fā)起檢索請(qǐng)求;
mPoiSearch.searchInCity((new PoiCitySearchOption())
.city("北京")
.keyword("ktv")
.pageNum(10));
第五步,釋放POI檢索實(shí)例;
mPoiSearch.destroy()
這個(gè)時(shí)候我們看看輸出的結(jié)果吧。(詳細(xì)的還請(qǐng)看官方文檔介紹,挺詳細(xì)的)


我們?cè)趤砜聪鹿恍畔z索:
第一步,創(chuàng)建POI檢索實(shí)例:
mPoiSearch = PoiSearch.newInstance();
第二步,創(chuàng)建BusLineSearch實(shí)例:
mBusLineSearch = BusLineSearch.newInstance();
第三步,實(shí)現(xiàn)這兩個(gè)接口:
mBusLineSearch.setOnGetBusLineSearchResultListener(this);
mPoiSearch.setOnGetPoiSearchResultListener(this);
第四步,處理實(shí)現(xiàn)的方法中的邏輯:
@Override
public void onGetBusLineResult(BusLineResult result) {
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(this, "抱歉,未找到結(jié)果",
Toast.LENGTH_LONG).show();
return;
}
Toast.makeText(this, result.getBusLineName(),
Toast.LENGTH_SHORT).show();
Log.d("MainActivity", result.toString());
List<BusLineResult.BusStation> steps = result.getStations();
StringBuffer sb = new StringBuffer();
for (BusLineResult.BusStation b:steps) {
sb.append("-->");
sb.append(b.getTitle());
}
Log.d("MainActivity", sb.toString());
}
@Override
public void onGetPoiResult(PoiResult result) {
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(this, "抱歉,未找到結(jié)果",
Toast.LENGTH_LONG).show();
return;
}
// 遍歷所有poi,找到類型為公交線路的poi
for (PoiInfo poi : result.getAllPoi()) {
if (poi.type == PoiInfo.POITYPE.BUS_LINE
|| poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {
//如下代碼為發(fā)起檢索代碼,定義監(jiān)聽者和設(shè)置監(jiān)聽器的方法與POI中的類似
mBusLineSearch.searchBusLine((new BusLineSearchOption()
//我這里的城市寫死了,和我要查的是一樣的
.city("北京")
.uid(poi.uid)));
}
}
}
@Override
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
}
第五步:發(fā)起檢索(我這里相對(duì)簡(jiǎn)單,只是查出來了第一個(gè)結(jié)果,后期的一個(gè)完整的demo會(huì)有其他的結(jié)果)
mPoiSearch.searchInCity((new PoiCitySearchOption())
.city("北京")
.keyword("717"));
我們來看下檢索出來的結(jié)果:
-->菜戶營橋東-->大觀園-->右安門西-->右安門內(nèi)-->南櫻桃園路口北-->牛街南口-->牛街禮拜寺-->牛街路口西-->廣安門內(nèi)-->廣安門北-->天寧寺橋西-->白云觀-->公安大學(xué)-->木樨地北-->玉淵潭東門-->釣魚臺(tái)-->甘家口北-->甘家口大廈-->二里溝西口-->四道口東-->白石橋南-->國家圖書館-->中央民族大學(xué)-->魏公村-->中國農(nóng)業(yè)科學(xué)院-->人民大學(xué)-->海淀黃莊南-->海淀黃莊北-->中關(guān)村南-->中關(guān)園-->中關(guān)園北站-->清華大學(xué)西門-->清華附中-->圓明園東門-->北京體育大學(xué)-->正白旗-->上地南口-->上地西里-->上地五街-->上地七街-->地鐵西二旗站
這里我們對(duì)比一下百度網(wǎng)頁中的結(jié)果(是一樣的哈)

后面的公交線路規(guī)劃(后期demo會(huì)有寫),在線建議查詢,線路規(guī)劃,實(shí)現(xiàn)的原理是一樣的,大家看下官方文檔就行了。