百度地圖中根據(jù)大頭針分布自動縮放地圖

這次碰到的問題是根據(jù)云檢索稠歉,獲取到了很多組大頭針數(shù)據(jù)射众,并將它們在地圖上顯示澎胡。然后有時候我們的搜索條件會致使大頭針的數(shù)量不同,那么它在地圖上的分布就應(yīng)該以所有大頭針都能包括的區(qū)域而動態(tài)改變地圖的等級预厌。研究了下阿迈,發(fā)現(xiàn)了跟這個類有關(guān)系BMKCoordinateRegion。廢話不多說配乓,上代碼~

在本地云檢索的代理方法onGetCloudPoiResult中仿滔,我們檢索大頭針的個數(shù)的常用代碼如下:

    if (error == BMKErrorOk) {
        BMKCloudPOIList* result = [poiResultList objectAtIndex:0];
        NSLog(@"1111111");
            for (int i = 0; i < result.POIs.count; i++) {
                BMKCloudPOIInfo* poi = [result.POIs objectAtIndex:i];
                BMKPointAnnotation* item = [[BMKPointAnnotation alloc] init];
                CLLocationCoordinate2D pt = (CLLocationCoordinate2D){ poi.longitude,poi.latitude};
                item.coordinate = pt;
                item.title = poi.title;               
                [_mapView addAnnotation:item];
                ......//下面還有點(diǎn),都是常見的犹芹,這里不寫了崎页,這不是重點(diǎn)
            }

一般如上代碼,我們可以得到我們需要在地圖上插得所有大頭針腰埂。我們既然要讓地圖按照大頭針的分布來自動縮放地圖飒焦,那么就得知道這么多大頭針中經(jīng)緯度最大的和最小的,然后取個中點(diǎn)屿笼,就像矩形那樣牺荠,得到中間點(diǎn),就好辦了~~~

思路:

我們可以創(chuàng)建兩個可變數(shù)組驴一,用來分別存放所有的經(jīng)度和緯度休雌,然后取出最大的和最小的經(jīng)緯度。OC中一個簡單的方法:[array valueForKeyPath:@"@min.floatValue"]] 取出數(shù)組中最小的肝断,[array valueForKeyPath:@"@max.floatValue"]] 取出數(shù)組中最大的杈曲。

得到中心點(diǎn)后,要根據(jù)region的范圍胸懈,來顯示合適的視角担扑。我下面寫的是0.06,大家可以根據(jù)自己需要調(diào)整,數(shù)字越小地圖等級越大趣钱,合適的就行了涌献。

最后通過方法 region = [_mapView regionThatFits:region];
[_mapView setRegion:region animated:YES];
代碼如下:

    if (error == BMKErrorOk) {
      //創(chuàng)建兩個數(shù)組,用來存所有的經(jīng)度和緯度
        NSMutableArray *latArr = [[NSMutableArray alloc] init];
        NSMutableArray *lonArr = [[NSMutableArray alloc] init];
        BMKCloudPOIList* result = [poiResultList objectAtIndex:0];
        NSLog(@"1111111");
            for (int i = 0; i < result.POIs.count; i++) {
                BMKCloudPOIInfo* poi = [result.POIs objectAtIndex:i];
                BMKPointAnnotation* item = [[BMKPointAnnotation alloc] init];
                CLLocationCoordinate2D pt = (CLLocationCoordinate2D){ poi.longitude,poi.latitude};
                item.coordinate = pt;
                item.title = poi.title;
                //用經(jīng)緯度數(shù)組分別存儲所有的經(jīng)緯度
                [latArr addObject:@(pt.latitude)];
                [lonArr addObject:@(pt.longitude)];
                
                [_mapView addAnnotation:item];
                
            }
        
        NSNumber *latMax = [latArr valueForKeyPath:@"@max.floatValue"];//最大緯度
        NSNumber *latMin = [latArr valueForKeyPath:@"@min.floatValue"];//最小緯度
        NSNumber *lonMax = [lonArr valueForKeyPath:@"@max.floatValue"];//最大經(jīng)度
        NSNumber *lonMin = [lonArr valueForKeyPath:@"@min.floatValue"];//最小經(jīng)度
        
        BMKCoordinateRegion region;
        region.center.latitude  = ([latMax doubleValue] + [latMin doubleValue]) / 2;
        region.center.longitude = ([lonMax doubleValue] + [lonMin doubleValue]) / 2;
        region.span.latitudeDelta = 0.06;
        region.span.longitudeDelta = 0.06;
        region = [_mapView regionThatFits:region];
        [_mapView setRegion:region animated:YES];
        
        
        NSLog(@"lat == %f, lon == %f, min1 == %f, min2 == %f", [latMax doubleValue], [latMin doubleValue], [lonMax doubleValue], [lonMin doubleValue]);
        
        NSLog(@"2222222");
        

    } else {
        NSLog(@"error ==%d",error);
        if (error == BMKErrorConnect) {
            [Tool HUDShowAddedTo:self.view withTitle:@"網(wǎng)絡(luò)連接錯誤" delay:1.5];
        } else if (error == BMKErrorResultNotFound) {
            [Tool HUDShowAddedTo:self.view withTitle:@"搜索結(jié)果未找到" delay:1.5];
        } else {
           [Tool HUDShowAddedTo:self.view withTitle:@"檢索失敗" delay:1.5];
        }
        
    }

最后給看官們大致看一下效果圖

Paste_Image.png

地圖自動根據(jù)大頭針個數(shù)縮放~~
如果對百度地圖不了解的童鞋首有,可以看我這篇文章燕垃,http://www.reibang.com/p/19f960054fd0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市井联,隨后出現(xiàn)的幾起案子利术,更是在濱河造成了極大的恐慌,老刑警劉巖低矮,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異被冒,居然都是意外死亡军掂,警方通過查閱死者的電腦和手機(jī)轮蜕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝗锥,“玉大人跃洛,你說我怎么就攤上這事≈找椋” “怎么了汇竭?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長穴张。 經(jīng)常有香客問我细燎,道長,這世上最難降的妖魔是什么皂甘? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任玻驻,我火速辦了婚禮,結(jié)果婚禮上偿枕,老公的妹妹穿的比我還像新娘璧瞬。我一直安慰自己,他們只是感情好渐夸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布嗤锉。 她就那樣靜靜地躺著,像睡著了一般墓塌。 火紅的嫁衣襯著肌膚如雪瘟忱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天桃纯,我揣著相機(jī)與錄音酷誓,去河邊找鬼。 笑死态坦,一個胖子當(dāng)著我的面吹牛盐数,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伞梯,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼玫氢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谜诫?” 一聲冷哼從身側(cè)響起漾峡,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喻旷,沒想到半個月后生逸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年槽袄,在試婚紗的時候發(fā)現(xiàn)自己被綠了烙无。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡遍尺,死狀恐怖截酷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乾戏,我是刑警寧澤迂苛,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站鼓择,受9級特大地震影響三幻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惯退,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一赌髓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧催跪,春花似錦锁蠕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骑丸,卻和暖如春舌仍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背通危。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工铸豁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人菊碟。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓节芥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逆害。 傳聞我的和親對象是個殘疾皇子头镊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容