####簡介:
- 目前百度地圖SDK所整合的檢索服務包括:POI檢索、公交資訊查詢、線路規劃、地理編碼、行政區邊界資料檢索、線上建議查詢、短串分享(包括POI搜尋結果分享、駕車/公交/騎行/步行路線規劃分享、反向地理編碼結果分享)。
- POI(Point of Interest),中文可以翻譯為“興趣點”。在地理資訊系統中,一個POI可以是一棟房子、一個商鋪、一個郵筒、一個公交站等。
- 如果還沒有整合百度地圖,可以看下百度地圖總結第一篇環境整合和Hello BaiduMap 我們來看下怎麼使用吧: 第一步,建立POI檢索例項
mPoiSearch = PoiSearch.newInstance();
複製程式碼
第二步,建立POI檢索監聽者;
OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener(){
public void onGetPoiResult(PoiResult result){
//獲取POI檢索結果
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詳情頁檢索結果
}
};
複製程式碼
第三步,設定POI檢索監聽者;
mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
複製程式碼
第四步,發起檢索請求;
mPoiSearch.searchInCity((new PoiCitySearchOption())
.city("北京")
.keyword("ktv")
.pageNum(10));
複製程式碼
第五步,釋放POI檢索例項;
mPoiSearch.destroy()
複製程式碼
這個時候我們看看輸出的結果吧。(詳細的還請看官方文件介紹,挺詳細的)
我們在來看下公交資訊檢索: 第一步,建立POI檢索例項:
mPoiSearch = PoiSearch.newInstance();
複製程式碼
第二步,建立BusLineSearch例項:
mBusLineSearch = BusLineSearch.newInstance();
複製程式碼
第三步,實現這兩個介面:
mBusLineSearch.setOnGetBusLineSearchResultListener(this);
mPoiSearch.setOnGetPoiSearchResultListener(this);
複製程式碼
第四步,處理實現的方法中的邏輯:
@Override
public void onGetBusLineResult(BusLineResult result) {
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(this, "抱歉,未找到結果",
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, "抱歉,未找到結果",
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) {
//如下程式碼為發起檢索程式碼,定義監聽者和設定監聽器的方法與POI中的類似
mBusLineSearch.searchBusLine((new BusLineSearchOption()
//我這裡的城市寫死了,和我要查的是一樣的
.city("北京")
.uid(poi.uid)));
}
}
}
@Override
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
}
複製程式碼
第五步:發起檢索(我這裡相對簡單,只是查出來了第一個結果,後期的一個完整的demo會有其他的結果)
mPoiSearch.searchInCity((new PoiCitySearchOption())
.city("北京")
.keyword("717"));
複製程式碼
我們來看下檢索出來的結果:
-->菜戶營橋東-->大觀園-->右安門西-->右安門內-->南櫻桃園路口北-->牛街南口-->牛街禮拜寺-->牛街路口西-->廣安門內-->廣安門北-->天寧寺橋西-->白雲觀-->公安大學-->木樨地北-->玉淵潭東門-->釣魚臺-->甘家口北-->甘家口大廈-->二里溝西口-->四道口東-->白石橋南-->國家圖書館-->中央民族大學-->魏公村-->中國農業科學院-->人民大學-->海淀黃莊南-->海淀黃莊北-->中關村南-->中關園-->中關園北站-->清華大學西門-->清華附中-->圓明園東門-->北京體育大學-->正白旗-->上地南口-->上地西里-->上地五街-->上地七街-->地鐵西二旗站
複製程式碼
這裡我們對比一下百度網頁中的結果(是一樣的哈)
後面的公交線路規劃(後期demo會有寫),線上建議查詢,線路規劃,實現的原理是一樣的,大家看下官方文件就行了。