iOS 高德地圖(二)(進階具體使用的細節)

前面咱們配置好了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
 
圖片 
 git



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
圖片
api




      前面咱們完成了地圖的基本展現和定位,下面咱們一塊兒來發掘地圖上的其餘功能。此次咱們來探索一下地圖中的搜索功能。

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>注意:拖動須要長按大頭針方可以使用(在容許拖動的狀態下)
圖片

app

相關文章
相關標籤/搜索