POI搜索分好多種,主要以城市內(nèi)搜索為例講解:
一.POi搜索
1.先說一下需要用到的類:
BMKMapView:地圖類
BMKPoiSearch :搜索服務(wù)類
BMKCitySearchOption :搜索包裝的參數(shù)類
2.搜索需要傳遞的參數(shù)為:以下4個(gè)
1.city,所在的城市
2.keyword,搜索的關(guān)鍵字(如美食,酒店等)
3.pageCapacity,搜索的分頁數(shù)量(默認(rèn)為10,最多為50)
4.pageIndex,搜索的頁碼(默認(rèn)為0)
3.各種代理方法調(diào)用順序
首先從整體來說:
BMKCitySearchOption 的對(duì)象作為包裝參數(shù)cityOption,通過BMKPoiSearch的對(duì)象self.poiSearch調(diào)用poiSearchInCity,
BOOL flag =[self.poiSearch poiSearchInCity:cityOption]
之后通過BMKSearchDelegate的onGetPoiResult:方法
告訴用戶獲得到搜索返回的數(shù)組列表,在onGetPoiResult中包裝成若干個(gè)大頭針模型,之后把大頭針模型添加到地圖上,如:[self.mapView addAnnotations:annotionArray];
分別先后調(diào)用了BMKMapViewDelegate 的viewForAnnotation: (目的:根據(jù)傳過來的annotion生成對(duì)應(yīng)的View)和didAddAnnotationViews: (之后添加到地圖上)的2個(gè)方法,完成搜索到的信息在地圖上展示的功能。
綜上:方法調(diào)用順序?yàn)閜oiSearchInCit:------->onGetPoiResult------->viewForAnnotation(每添加一次調(diào)用一次)------->didAddAnnotationViews(每添加一次調(diào)用一次),最終完成了地圖上的Poi(興趣點(diǎn))搜索功能。
二.地理編碼和反地理編碼
正向地理編碼指的是:告訴地方名稱,編碼出經(jīng)緯度
反向地理編碼指的是:告訴地理經(jīng)緯度,編碼出地方名稱
不要搞混了哦!
1.用到的類:
BMKMapView:地圖類
BMKGeoCodeSearch:地理反地理編碼類
BMKGeoCodeSearchOption:地理編碼編碼參數(shù)類
BMKReverseGeoCodeOption:反地理編碼編碼參數(shù)類
2.調(diào)用順序:
1.正向地理編碼
1.[self.geoSearch geoCode:geoSearchOption] 觸發(fā)了正向地理編碼
通過BMKGeoCodeSearchDelegate 的onGetGeoCodeResult:方法獲得到編碼的信息(可以展示),也可以通過[self.mapView addAnnotation:item];調(diào)用BMKMapViewDelegate的viewForAnnotation:這個(gè)方法,在里面通過大頭針模型生成大頭針View展示到地圖上,完成正向地理編碼。
2.反向地理編碼
同上:(只是代理方法稍微不同,詳見Demo)