生活随笔
收集整理的這篇文章主要介紹了
iOS 高德地图(二)(进阶具体使用的细节)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
前面我們配置好了SDK的環境,也在高德的官網中申請了AppKey:de5b39fb2b066ed80c51383bb3a1fe42,接下來我們就可以開始代碼的編寫,實現一個基本的地圖顯示了 代碼配置顯示地圖(在開發指南中查看代碼需要配置的內容) 1.配置appKey,一般在工程的入口配置[MAMapServices sharedServices].apiKey = @"用戶Key"; 導入頭文件#import <MAMapKit/MAMapKit.h> 并在啟動位置配置apiKey(這里需要使用到申請的appKey) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ? ? ?[MAMapServices sharedServices].apiKey = @"de5b39fb2b066ed80c51383bb3a1fe42"; ? ?// Override point for customization after application launch. ? ?return YES; }?
2.在顯示地圖的界面調用以下代碼顯示地圖 (1)導入頭文件<MAMapKit/MAMapKit.h> (2)聲明地圖的協議<MAMapViewDelegate> (3)添加地圖的UI ???
3.運行工程,即可看到地圖的基本顯示 ?
4.地圖成功顯示后,我們可以做一個定位,顯示我們目前所在的位置 開啟定位功能: (1)在plist表單中加入字段請求允許訪問用戶的坐標 <一> NSLocationWhenInUseUsageDescription當百度地圖使用的時候可以獲取用戶坐標 <二>NSLocationAlwaysUsageDescription不管百度地圖是否在使用,都能獲取用戶坐標 (2)設置追蹤用戶目前的位置(在_mapView創建的地方編寫即可) _mapView.showsUserLocation = YES;?
//直接跟隨到用戶目前的界面 [_mapView setUserTrackingMode: MAUserTrackingModeFollow animated:YES]; ?
//幾種類型設置 typedef NS_ENUM(NSInteger, MAUserTrackingMode) { ? ?????MAUserTrackingModeNone ? ? ? ? ? ? ?= 0, ? ?// 不追蹤用戶的location更新 MAUserTrackingModeFollow ? ? ? ? ? ?= 1, ? ?// 追蹤用戶的location更新 MAUserTrackingModeFollowWithHeading = 2 ? ? // 追蹤用戶的location與heading更新 }; ? (3)在delegate中返回用戶的坐標? #pragma mark - 定位功能 -(void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation { ? ?if(updatingLocation) ? ?{ ? ? ? ?//取出當前位置的坐標 ? ? ? ?NSLog(@"latitude : %f,longitude: %f",userLocation.coordinate.latitude,userLocation.coordinate.longitude); ? ?} } (4)打印出目前用戶的地址經緯度,即可通過經緯度設定當前的地圖位置 ??????? //制定地圖的中心點,讓地圖顯示在該點上 ????????CLLocationCoordinate2D coordinate2D = CLLocationCoordinate2DMake(latitudeGuangzhou, longitudeGuangzhou); ? ? ? ? ? ? ? ?_mapView.centerCoordinate = coordinate2D;
?
(5)注意事項: 在模擬器上,不能真實的定位你當成的坐標,所以必須在模擬器上設置一個虛擬坐標。 操作如下: <1>選中模擬器 <2>在頂部欄中選擇Debug <3>選擇Debug中的location <4>設定location中的customLocation <5>一般這里默認的是北京的紫禁城坐標,你需要先獲取一個可用的坐標再給他賦值 <6>一般可用的坐標都需要使用地圖的相應方法獲取(這里簡單的做法是有真機測試獲取手機的真實坐標) <7>這里提供一個廣州的坐標 #define latitudeGuangzhou 23.176230 #define longitudeGuangzhou 113.340806
|
? ? ? 前面我們完成了地圖的基本展示和定位,下面我們一起來發掘地圖上的其他功能。這次我們來探索一下地圖中的搜索功能。
1.使用搜索功能,需要再添加一個搜索功能庫,這個庫可以在高德的Demo文件中找到,添加到工程中可以直接使用
?
2.添加完framework庫以后,就可以直接使用了搜索功能了(通過關鍵字進行搜索)
(1)導入頭文件
#import <AMapSearchKit/AMapSearchAPI.h>
(2)導入使用到的協議?<AMapSearchDelegate>
?
(3)創建一個搜索類
<1>創建一個SeachAPI對象,傳入參數:appKey和回調對象實現者聲明
<2>創建一個搜索請求對象(設置請求的參數)
<3>搜索請求對象的屬性設置(搜索模式,搜索地點關鍵字,搜索城市,是否返回拓展信息)
(4)在回調中獲取搜索結果的信息
<1>回調中成功返回會有請求的對象信息和返回的對象信息
<2>先判斷是否具有所搜索的對象,如果有搜多結果,則打印處理搜索出來的結果
<3>打印一些有用的結果參數
<4>返回對象AMapPOI中的一些基本屬性(參數Model)
3.搜索功能的另外一種形式(通過區域中心范圍搜索)
<1>同樣需要創建_search對象
<2>在配置請求信息時設置的屬性參數不同
<3>主要設置的搜索按照location返回搜索結果(經緯度設置)
<4>設置排序方式,使用按照距離遠近排序(近的排在前面)
5.在搜索請求添加約束條件
<1>filter為request添加約束條件
<2>filter中的屬性costFilter約束消費的平均范圍
<3>屬性AMapRequireGroupbuy設置搜索行業的信息(這里表明搜索全行業)
6.到這里,搜索功能就基本結束了,具體的其他功能,可以查看高德地圖Demo中的MapViewPOI文件
? ? 接下來,需要了解一下高德地圖中的大頭針的簡單使用,來標示出我們需要搜索的位置,和我們自己的位置
1.大頭針的簡單創建
(1)創建一個大頭針的對象
(2)設置大頭針的坐標位置
(3)設置大頭針的文本提示語
(4)把大頭針加入到數組中annotations為裝載大頭針的數組
(5)把大頭針數組設置到mapView中
<1>設置mapView中的大頭針數組
<2>顯示加載到mapView中的大頭針
?
2.大頭針的自定義?
在mapView的回調中,有重新設定mapView大頭針的方法
這里回調中給出了大頭針對象和mapView對象
可以根據這兩個參數生成一個大頭針的view對象,返回給mapView,mapView將自動改變大頭針的樣式
(1)大頭針的重用機制
這里使用的大頭真重用機制與tableview中的重用機制相仿,當大頭針拖拽出界面以后,大頭真會被回收,用來顯示別的大頭針(這樣可以使上千上萬的大頭針不需要一起加載到mapView中,只是現實界面中所需要顯示的即可)
(2)大頭針的樣式改動
<1>canShowCallout:是否顯示選中時的狀態顯示(顯示設定好的標題)
<2>animatesDrop:拖動時是否具有動畫
<3>draggable:是否支持拖動
<4>rightCalloutAccessoryView:顯示在氣泡右側的view設定
<5>pinColor:大頭針的顏色,有MAPinAnnotationColorRed, MAPinAnnotationColorGreen, MAPinAnnotationColorPurple三種
<6>注意:拖動需要長按大頭針方可使用(在允許拖動的狀態下)
轉載于:https://my.oschina.net/gongzhiming/blog/637898
總結
以上是生活随笔為你收集整理的iOS 高德地图(二)(进阶具体使用的细节)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。