前奏. 知識點介紹php
一. 導航和畫線ios
二. 百度地圖數組
三. 社交分享微信
一. 導航和畫線網絡
1. 地圖畫線 (理解)框架
要進行畫線—-> 須要獲取起始點及終點位置—-> 建立方向對象計算路線—->獲取路線添加到地圖上—-> 設置渲染對象編碼
注意: 實現畫線, 須要請求用戶受權. 畫線時須要獲取用戶的當前位置, 此時, 就必須在當前程序中請求受權.spa
/** 1. 須要請求受權 2. 建立一個方向請求對象來計算路線, 並獲取路線軌跡, 添加到地圖上 3. 將路線軌跡渲染到地圖上 */ - (void)routeWithSourceItem:(MKMapItem *)sourceItem destinationItem:(MKMapItem *)destinationItem { //1. 建立方向請求對象 --> 拼接請求參數 MKDirectionsRequest *request = [MKDirectionsRequest new]; request.source = sourceItem; request.destination = destinationItem; //2. 建立一個方向對象 --> 建立一個完整的請求URL MKDirections *directions = [[MKDirections alloc] initWithRequest:request]; //3. 計算路線 --> 發送請求 [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse * _Nullable response, NSError * _Nullable error) { //3.1 防錯處理 if (error || response.routes.count == 0) { NSLog(@"出錯"); return ; } //3.2 獲取路線信息 --> 取一個 MKRoute *route = response.routes.firstObject; //polyline: 折線 --> 也就是實際的路線軌跡 //Overlay: 遮蓋物 [self.mapView addOverlay:route.polyline]; }]; } //只要地圖添加了addOverlay了, 就會來到此方法, 設置渲染 //MKOverlay:遮蓋物 Renderer:渲染 - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay { //1. 建立折線渲染物對象 MKPolylineRenderer *polyline = [[MKPolylineRenderer alloc] initWithOverlay:overlay]; //2. 設置顏色 --> 必須的 polyline.strokeColor = [UIColor blueColor]; polyline.lineWidth = 5; //3. 返回此對象 return polyline; }
二. 百度地圖翻譯
1. 集成百度地圖 (掌握)代理
#pragma mark 1. 集成百度地圖 (掌握)
一. 爲何更多的開發者使用第三方SDK?
1. 第三方SDK有文檔, 有Demo, 使用方便
2. 爲了統一各個平臺的經緯度問題(火星座標)
二. SDK的使用流程
1. 第三方SDK(開發組件包, 須要註冊才能使用 --> 須要建立應用 --> 須要獲取受權碼 --> Appdelete中註冊 ) > 第三方類庫(AFN/SDWebImage)
2. 集成文檔的查看順序 仔細看文檔就能夠實現.
3. 按照須要的功能, 拷貝對應的代碼, 修改細節便可
三. 集成百度地圖的流程
1. 註冊開發者, 註冊應用程序 --> Key
2. 開發指南 --> 配置開發環境 --> Hello BaiduMap --> 注意事項
3. 按照須要的功能找對應的文檔代碼,若是文檔有問題,能夠參考Demo
2. POI檢索 (掌握)
- (void)poiSearch { //初始化檢索對象 _searcher =[[BMKPoiSearch alloc]init]; _searcher.delegate = self; //發起檢索 --> 拼接參數 BMKNearbySearchOption *option = [[BMKNearbySearchOption alloc]init]; ///分頁索引,可選,默認爲0 option.pageIndex = 0; ///分頁數量,可選,默認爲10,最多爲50 option.pageCapacity = 10; option.location = CLLocationCoordinate2DMake(39.915, 116.404); option.keyword = @"小吃"; //這裏至關於在發送網絡請求 用search對象拼接了otion的參數 BOOL flag = [_searcher poiSearchNearBy:option]; if(flag) { NSLog(@"周邊檢索發送成功"); } else { NSLog(@"周邊檢索發送失敗"); } } //實現PoiSearchDeleage處理回調結果 - (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error { if (error == BMK_SEARCH_NO_ERROR) { //在此處理正常結果 //1. 直接顯示大頭針 //2. 顯示TableView //從poi結果數組中獲取 for (BMKPoiInfo *poiInfo in poiResultList.poiInfoList) { // 添加一個PointAnnotation BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init]; annotation.coordinate = poiInfo.pt; annotation.title = poiInfo.name; [_mapView addAnnotation:annotation]; } } else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){ //當在設置城市未找到結果,但在其餘城市找到結果時,回調建議檢索城市列表 // result.cityList; NSLog(@"起始點有歧義"); } else { NSLog(@"抱歉,未找到結果"); } }
三. 社交分享
1. 系統自帶分享 (瞭解)
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { //1. 判斷分享的類型是否可用 if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) { NSLog(@"請到設置中添加新浪微博帳號, 而後在分享"); return; } //2. 建立分享控制器 SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo]; //2.1 文字 [composeVC setInitialText:@"拉斯維加斯之夜, 一不當心輸了2個億, 就是爲了圖個開心"]; //2.2 圖像 [composeVC addImage:[UIImage imageNamed:@"1"]]; //2.3 網址 [composeVC addURL:[NSURL URLWithString:@"http://www.itcast.cn"]]; //3. 模態彈出 [self presentViewController:composeVC animated:nil completion:nil]; }
2. 友盟分享 (掌握)
3. SSO受權 (理解)
SSO受權: 單點登陸. 獲取受權時(譬如微博), 若是手機已經安裝對應的客戶端(譬如微博客戶端), 則可經過對應的官方客戶端快速完成OAuth2.0受權。