百度地圖總結第二篇 POI檢索功能

若蘭__明月發表於2018-01-03

####簡介:

  • 目前百度地圖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檢索功能
百度地圖總結第二篇  POI檢索功能

我們在來看下公交資訊檢索: 第一步,建立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"));
複製程式碼

我們來看下檢索出來的結果:

-->菜戶營橋東-->大觀園-->右安門西-->右安門內-->南櫻桃園路口北-->牛街南口-->牛街禮拜寺-->牛街路口西-->廣安門內-->廣安門北-->天寧寺橋西-->白雲觀-->公安大學-->木樨地北-->玉淵潭東門-->釣魚臺-->甘家口北-->甘家口大廈-->二里溝西口-->四道口東-->白石橋南-->國家圖書館-->中央民族大學-->魏公村-->中國農業科學院-->人民大學-->海淀黃莊南-->海淀黃莊北-->中關村南-->中關園-->中關園北站-->清華大學西門-->清華附中-->圓明園東門-->北京體育大學-->正白旗-->上地南口-->上地西里-->上地五街-->上地七街-->地鐵西二旗站
複製程式碼

這裡我們對比一下百度網頁中的結果(是一樣的哈)

百度地圖總結第二篇  POI檢索功能
後面的公交線路規劃(後期demo會有寫),線上建議查詢,線路規劃,實現的原理是一樣的,大家看下官方文件就行了。

相關文章