国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS開發之地圖與定位

2019-11-14 20:00:10
字體:
來源:轉載
供稿:網友

  無論是QQ還是微信的移動客戶端都少不了定位功能,之前在微信demo中沒有添加定位功能,今天就寫個定位的小demo來了解一下定位和地圖的東西。地圖和定位看上去是挺高大上一東西,其實用法比TableView簡單多了,下面的Demo是用的iOS中自帶的地圖和定位,當然了也可以用第三方的來加載地圖,比如百度地圖啥的,在這就不贅述了。今天的博客主要是介紹MKMapView的使用,MapView的使用和其他組件的用法差不多,MapView用的是委托回調,在使用mapView的Controller中要實現MKMapViewDelegate協議,并注冊委托回調,然后實現相應的回調方法即可。

 

  一,構建Demo的組件

    為了節省時間這個demo中的MapView是用Storyboard拖出來的,storyboard中的結構如下所示,上面是MKMapView用于顯示地圖,下面的labei用于顯示當前經緯度:

  二,引入MKMapView要用的包,截圖如下:

 

  三、編寫標注模塊的類

    1.首先解釋一下標注模塊是什么東西:標注模塊就是顯示當前地理位置的信息,下面圖種綠色框中是標注模塊:

  

  

    2.編寫標注類,標注類必須實現MKAnnotation協議,MyAnnotation.h中的代碼如下:

  

    3.實現協議MyAnnotation中的方法,titile返回的是標題,subTitle是子標題,代碼如下:

  四、編寫ViewController中的代碼

    1.ViewController.h中要引入相應的包和實現相應的協議代碼如下

    2.編寫ViewController.m中的代碼,實現協議中相應的委托回調方法,.m中的延展和初始化方法如下

     

    3.實現委托回調中的標注視圖,代碼截圖如下:

 

    4.獲取地理位置信息,代碼如下:

 1 //實現協議中的方法獲取坐標 2 -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 3 { 4     //獲取location 5     CLLocation *location = userLocation.location; 6      7     //通過location獲取經緯度 8     CLLocationCoordinate2D coordinate = location.coordinate; 9     10     11     //顯示經緯度12     [self mapPoint:coordinate];13     14     15     //標記范圍16     MKCoordinateSpan span;17     span.latitudeDelta=0.1;18     span.longitudeDelta=0.1;19     MKCoordinateRegion region={coordinate ,span};20     21     [self.myMapView setRegion:region];22     23     24 25     __block __weak ViewController *copy_self = self;26 27     //解析地理位置28     CLGeocoder *geocoder = [[CLGeocoder alloc] init];29     [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {30         if (placemarks.count > 0) {31             //使用CLPlacemark解析地理位置32             CLPlacemark *placeMark = placemarks[0];33             NSDictionary *addressDictionary = placeMark.addressDictionary;34     35             36             //添加地圖的標注37             MyAnnotation *annotation = [[MyAnnotation alloc] init];38             annotation.subTitle = addressDictionary[@"Name"];39             annotation.coordinate = coordinate;40             41             //添加標注信息42             [copy_self.myMapView addAnnotation:annotation];43         }44     }];45   46 }
View Code

 

  以上是Demo的所有代碼,下面是運行的效果圖:

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莱芜市| 比如县| 岚皋县| 昌平区| 邓州市| 溆浦县| 信阳市| 临澧县| 门源| 固镇县| 乐山市| 来凤县| 巨鹿县| 宽甸| 云阳县| 张家港市| 佛坪县| 抚远县| 宁化县| 灵山县| 黄大仙区| 闽清县| 湖口县| 南乐县| 库尔勒市| 岚皋县| 商水县| 公主岭市| 保德县| 白沙| 新兴县| 东乡县| 台北县| 诸城市| 潼关县| 扬中市| 井陉县| 文登市| 浦县| 峡江县| 平定县|