百度地圖移動版API不僅包含構建地圖的基本介面,還整合了眾多搜尋服務,包括:位置檢索、周邊檢索、 範圍檢索、公交檢索、駕乘檢索、步行檢索、地址資訊查詢等。
百度地圖移動版API提供的搜尋服務主要是 通過初始化MKSearch類,註冊搜尋結果的監聽對象MKSearchListener來實現非同步搜尋服務。首先需要自訂一 個MySearchListener類,它實現MKSearchListener介面,然後通過實現介面中不同的回調方法,來獲得對應的 搜尋結果。MySearchListener類的定義如下:
/** * 實現MKSearchListener介面,用於實現非同步搜尋服務,得到搜尋結果 * * @author liufeng */public class MySearchListener implements MKSearchListener { /** * 根據經緯度搜尋地址資訊結果 * @param result 搜尋結果 * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetAddrResult(MKAddrInfo result, int iError) { } /** * 駕車路線搜尋結果 * @param result 搜尋結果 * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) { } /** * POI搜尋結果(範圍檢索、城市POI檢索、周邊檢索) * @param result 搜尋結果 * @param type 返回結果類型(11,12,21:poi列表 7:城市列表) * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetPoiResult(MKPoiResult result, int type, int iError) { } /** * 公交轉乘路線搜尋結果 * @param result 搜尋結果 * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) { } /** * 步行路線搜尋結果 * @param result 搜尋結果 * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) { } }
說明:上面的類定義只是在說明MKSearchListener類的5個方法的作用,全都是空實現,並未給出 具體的實現。根據你要檢索的內容,再去具體實現上面對應的方法,就能擷取到搜尋結果。例如:1)你想通 過一個地理座標(經緯度值)來搜尋地址資訊,那麼只需要具體實現上面的onGetAddrResult()方法就能得到 搜尋結果;2)如果你想搜尋駕車路線資訊,只需要具體實現onGetDrivingRouteResult()方法就能得到搜尋結 果。
緊接著,需要初始化MKSearch類:
// 初始化MKSearch mMKSearch = new MKSearch(); mMKSearch.init(mapManager, new MySearchListener());
經過上面兩步之後,就可以通過調用 MKSearch所提供的一些檢索方法來搜尋你想要的資訊了。