iOS-百度地圖點聚合與自定義針頭

示例圖

關于怎么導入百度地圖SDK與創(chuàng)建應用就不多說了诊胞,百度的文檔應該比我說的更詳細沙峻,下面直接正文吧

1.首先地圖的初始化

- (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated];

}

/// 地圖

- (void)setupView {

_mapView = [[BMKMapView alloc]init];

[_mapView setMapType:BMKMapTypeStandard];// 地圖類型 ->衛(wèi)星/標準睦授、

_mapView.showsUserLocation = YES;

_mapView.gesturesEnabled = YES;

_mapView.delegate = self; // 此處記得不用的時候需要置nil,否則影響內存的釋放

_mapView.frame = self.view.bounds;

[self.view addSubview:_mapView];

}

// 地圖的初始化

- (void)setupMapService {

_locService = [[BMKLocationService alloc]init];

_locService.delegate = self;

_locService.desiredAccuracy =? kCLLocationAccuracyBest;

_locService.distanceFilter = 10;//大于100米

[_locService startUserLocationService];

_geoCodeSerch = [[BMKGeoCodeSearch alloc] init];

_geoCodeSerch.delegate = self;

_mapView.showsUserLocation = NO;//先關閉顯示的定位圖層

_mapView.userTrackingMode = BMKUserTrackingModeFollow;//設置定位的狀態(tài)

_mapView.showsUserLocation = YES;//顯示定位圖層

_clusterManager = [[BMKClusterManager alloc] init];

//初始化檢索對象

self.districtSearch = [[BMKDistrictSearch alloc] init];

//設置delegate专酗,用于接收檢索結果

self.districtSearch.delegate = self;

//在此處理正常結果

_clusterCaches = [[NSMutableArray alloc] init];

for (NSInteger i = 3; i < 22; i++) {

[_clusterCaches addObject:[NSMutableArray array]];

? ? ?}

}


2.地圖的開始與加載完畢

/**

*地圖初始化完畢時會調用此接口

*@param mapView 地圖View

*/

- (void)mapViewDidFinishLoading:(BMKMapView *)mapView {

BMKLocationViewDisplayParam *displayParam = [[BMKLocationViewDisplayParam alloc]init];

displayParam.isAccuracyCircleShow = NO;//精度圈是否顯示

[_mapView updateLocationViewWithParam:displayParam];

BMKCoordinateRegion region ;//表示范圍的結構體

region.center = _mapView.centerCoordinate;//中心點

self.cCoordinate = _mapView.centerCoordinate;//中心點

region.span.latitudeDelta = 0.002;//經度范圍(設置為0.1表示顯示范圍為0.2的緯度范圍)

region.span.longitudeDelta = 0.002;//緯度范圍

[_mapView setRegion:region animated:YES];

[self updateClusters];

}

/**

*地圖渲染每一幀畫面過程中睹逃,以及每次需要重繪地圖時(例如添加覆蓋物)都會調用此接口

*@param mapView 地圖View

*@param status 此時地圖的狀態(tài)

*/

- (void)mapView:(BMKMapView *)mapView onDrawMapFrame:(BMKMapStatus *)status {

if (_clusterZoom != 0 && _clusterZoom != (NSInteger)mapView.zoomLevel) {

? ?[self updateClusters];

? }

}


3.地圖的位置發(fā)生變化

- (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {

//屏幕坐標轉地圖經緯度

CLLocationCoordinate2D MapCoordinate = [_mapView convertPoint:_mapView.center toCoordinateFromView:_mapView];

if (_reverseGeoCodeOption==nil) {

//初始化反地理編碼類

_reverseGeoCodeOption= [[BMKReverseGeoCodeOption alloc] init];

}

//需要逆地理編碼的坐標位置

_reverseGeoCodeOption.reverseGeoPoint =MapCoordinate;

[_geoCodeSerch reverseGeoCode:_reverseGeoCodeOption];

// 如果你是請求自己后臺的數據可以在這里請求,可以省去下面檢索回來的數據祷肯,由于我的是demo沉填,所以下面是必須要的

BMKNearbySearchOption *option = [[BMKNearbySearchOption alloc]init];

option.pageIndex = 1;

option.pageCapacity = 10;

option.location = mapView.centerCoordinate;

option.keyword = @"小吃";

BOOL flag = [self.poiSearch poiSearchNearBy:option];

? if(flag) {

? ? ? ? NSLog(@"周邊檢索發(fā)送成功");

? ? ?}else{

? ? ? ?NSLog(@"周邊檢索發(fā)送失敗");

? ? }

}




// 當地圖發(fā)生改變之后,檢索并

//實現PoiSearchDeleage處理回調結果

- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error

{

if (error == BMK_SEARCH_NO_ERROR) {

//在此處理正常結果

}

else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){

//當在設置城市未找到結果佑笋,但在其他城市找到結果時翼闹,回調建議檢索城市列表

// result.cityList;

NSLog(@"起始點有歧義");

} else {

NSLog(@"抱歉,未找到結果");

}

// 清空緩存數據

?[_clusterManager clearClusterItems];

?for (BMKPoiInfo *poiInfo in poiResultList.poiInfoList) {

? XJCluster *cluster = [[XJCluster alloc] init];

? cluster.name = poiInfo.name;

? ?cluster.pt = poiInfo.pt;

? ? // 添加數據

? ?[self addAnnoWithPT:cluster];

? ?}

}


4.更新點聚合狀態(tài)

- (void)updateClusters {

_clusterZoom = (NSInteger)_mapView.zoomLevel;

@synchronized(_clusterCaches) {

NSMutableArray *clusters = [NSMutableArray array];

dispatch_async(dispatch_get_global_queue(0, 0), ^{

///獲取聚合后的標注

__block NSArray *array = [_clusterManager getClusters:_clusterZoom];

dispatch_async(dispatch_get_main_queue(), ^{

for (BMKCluster *item in array) {

XJClusterAnnotation *annotation = [[XJClusterAnnotation alloc] init];

annotation.coordinate = item.coordinate;

annotation.size = item.size;

annotation.title = item.title;

annotation.cluster = item.cluster;

[clusters addObject:annotation];

}

[_mapView removeOverlays:_mapView.overlays];

[_mapView removeAnnotations:_mapView.annotations];

[_mapView addAnnotations:clusters];

});

});

}

}

demo:https://github.com/SingGitHub/BMKMapClusterView

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末蒋纬,一起剝皮案震驚了整個濱河市猎荠,隨后出現的幾起案子坚弱,更是在濱河造成了極大的恐慌,老刑警劉巖关摇,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荒叶,死亡現場離奇詭異,居然都是意外死亡输虱,警方通過查閱死者的電腦和手機些楣,發(fā)現死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宪睹,“玉大人愁茁,你說我怎么就攤上這事⊥げ。” “怎么了鹅很?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長罪帖。 經常有香客問我促煮,道長,這世上最難降的妖魔是什么胸蛛? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任污茵,我火速辦了婚禮樱报,結果婚禮上葬项,老公的妹妹穿的比我還像新娘。我一直安慰自己迹蛤,他們只是感情好民珍,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盗飒,像睡著了一般嚷量。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逆趣,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天蝶溶,我揣著相機與錄音,去河邊找鬼宣渗。 笑死抖所,一個胖子當著我的面吹牛,可吹牛的內容都是我干的痕囱。 我是一名探鬼主播田轧,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鞍恢!你這毒婦竟也來了傻粘?” 一聲冷哼從身側響起每窖,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弦悉,沒想到半個月后窒典,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡稽莉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年崇败,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肩祥。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡后室,死狀恐怖,靈堂內的尸體忽然破棺而出混狠,到底是詐尸還是另有隱情岸霹,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布将饺,位于F島的核電站贡避,受9級特大地震影響,放射性物質發(fā)生泄漏予弧。R本人自食惡果不足惜刮吧,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掖蛤。 院中可真熱鬧杀捻,春花似錦、人聲如沸蚓庭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽器赞。三九已至垢袱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間港柜,已是汗流浹背请契。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夏醉,地道東北人爽锥。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像授舟,于是被迫代替她去往敵國和親救恨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容