android开发地图找房,androidsdk | 百度地图API SDK
更新時間:2020-06-23
POI檢索簡介
POI(Point of Interest),即“興趣點”。在地理信息系統中,一個POI可以是一棟房子、一個景點、一個郵筒或者一個公交站等。
百度地圖SDK提供三種類型的POI檢索:城市內檢索、周邊檢索和區域檢索(即矩形區域檢索)。下面分別對三種POI檢索服務的使用方法作說明。
POI城市內檢索(關鍵字檢索)
關鍵字檢索適用于在某個城市內搜索某個名稱相關的POI,例如:查找“北京市”的“小吃”。
示例如下:
1創建POI檢索實例
mPoiSearch = PoiSearch.newInstance();
2創建POI檢索監聽器
OnGetPoiSearchResultListener listener = new OnGetPoiSearchResultListener() {
@Override
public void onGetPoiResult(PoiResult poiResult) {
}
@Override
public void onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult) {
}
@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
}
//廢棄
@Override
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
}
};
3設置檢索監聽器
mPoiSearch.setOnGetPoiSearchResultListener(listener);
4設置PoiCitySearchOption,發起檢索請求
/**
* PoiCiySearchOption 設置檢索屬性
* city 檢索城市
* keyword 檢索內容關鍵字
* pageNum 分頁頁碼
*/
mPoiSearch.searchInCity(new PoiCitySearchOption()
.city("北京") //必填
.keyword("美食") //必填
.pageNum(0));
5釋放檢索實例
mPoiSearch.destroy();
PoiCitySearchOption屬性詳解
除了示例代碼中描述的必填的字段,其他常用字段的介紹如下表所示。
pageNum
分頁編號,默認返回第0頁結果
pageCapacity
設置每頁容量,默認為10條結果
tag
設置檢索分類,如“美食”
scope
值為1 或 空,返回基本信息
值為2,返回POI詳細信息
cityLimit
是否限制檢索區域為城市內
poiFilter
設置檢索過濾條件,scope為2時有效
注:您可以在 Web服務API 頁面查看PoiSearch請求參數和返回參數的詳細內容。
注意事項:
1. POI檢索時,city是必填項。
2. 當輸入的關鍵字在該city檢索無結果,而在其他城市檢索到時,SDK會返回一個CityInfo對象列表,該列表可以通過PoiResult類getSuggestCityList方法獲取。
public List getSuggestCityList()
CityInfo包含城市名和該城市內檢索結果的數量等信息。開發者可以通過該列表進行二次請求。
3. 開發者可以通過設置PoiCitySearchOption對象cityLimit字段為false(默認為true)來擴大檢索范圍,當city內檢索無結果時,會將檢索范圍擴大至全國。
效果如圖:
POI詳情
開發者可以針對PoiCitySearch檢索到的結果進行進一步的檢索以獲取詳細信息。
示例如下:
發起檢索:
//PoiInfo 檢索到的第一條信息
PoiInfo poi = mPoiResult.getAllPoi().get(0);
//通過第一條檢索信息對應的uid發起詳細信息檢索
mPoiSearch.searchPoiDetail((new PoiDetailSearchOption())
.poiUids(poi.uid)); // uid的集合,最多可以傳入10個uid,多個uid之間用英文逗號分隔。
在onGetPoiDetailResult(PoiDetailSearchResult PoiDetailSearchResult)回調方法中處理。
OnGetPoiSearchResultListener listener = new OnGetPoiSearchResultListener() {
......
@Override
public void onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult) {
}
};
注意:自V5.2.0起,Poi詳情檢索的回調方法onGetPoiDetailResult(PoiDetailResult poiDetailResult)方法已廢棄,請使用onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult)方法代替,在檢索時檢索參數必須使用poiUids(poi.uid)。
POI周邊檢索
周邊檢索是在一個圓形范圍內的POI檢索,適用于以某個位置為中心點,自定義搜索半徑,搜索某個位置附近的POI。
設置SearchOption,發起周邊檢索請求示例如下:
/**
* 以天安門為中心,搜索半徑100米以內的餐廳
*/
mPoiSearch.searchNearby(new PoiNearbySearchOption()
.location(new LatLng(39.915446, 116.403869))
.radius(100);
//支持多個關鍵字并集檢索,不同關鍵字間以$符號分隔,最多支持10個關鍵字檢索。如:”銀行$酒店”
.keyword("餐廳")
.pageNum(0));
效果如圖:
POI區域檢索(矩形區域檢索)
POI區域檢索,即“在由開發者指定的西南角和東北角組成的矩形區域內的POI檢索”。
設置PoiBoundsSearchOptions,發起檢索請求示例如下:
/**
* 設置矩形檢索區域
*/
LatLngBounds searchBounds = new LatLngBounds.Builder()
.include(new LatLng( 39.92235, 116.380338 ))
.include(new LatLng( 39.947246, 116.414977))
.build();
/**
* 在searchBounds區域內檢索餐廳
*/
mPoiSearch.searchInBound(new PoiBoundSearchOption()
.bound(searchBounds)
.keyword("餐廳"));
效果如圖:
檢索結果覆蓋物
開發者可以使用自V3.6.0起開源的覆蓋物源代碼來完成Poi檢索結果的展示。
示例如下:
@Override
public void onGetPoiResult(PoiResult poiResult) {
if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {
mBaiduMap.clear();
//創建PoiOverlay對象
PoiOverlay poiOverlay = new PoiOverlay(mBaiduMap);
//設置Poi檢索數據
poiOverlay.setData(poiResult);
//將poiOverlay添加至地圖并縮放至合適級別
poiOverlay.addToMap();
poiOverlay.zoomToSpan();
}
}
效果如圖:
總結
以上是生活随笔為你收集整理的android开发地图找房,androidsdk | 百度地图API SDK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [GPGPU]图形处理单元上的通用计算
- 下一篇: Shiro-官方文档及使用